promise到底如何返回值,记录小用法

通过axios请求数据,将promise中的数据return出外层调用函数去:
第一种方式,不进then,整体扔出去,数据在外层处理

checkUsernameExist() {
      return this.$axios.post("user_exsit", {
        username: this.formSignup.username
      });
      
    },

var checkUsername = async (rule, value, callback) => {
      if (!value) {
        return callback(new Error("用户名不能为空"));
      } else {

        var x = await this.checkUsernameExist();
        console.log(x);
        if (false) {
          callback(new Error("用户名重复"));
        } else {
          callback();
        }

      }
    };

第二种方式,在then中进行一定数据处理以后再return一个Promise.resolve()方法

checkUsernameExist() {
      return this.$axios
        .post("user_exsit", {
          username: this.formSignup.username
        })
        .then(res => {
          console.log(res);
          return Promise.resolve(res.data);
        });
    },
    

第二种还可以写为new Promise的形式:

checkUsernameExist() {
      return this.$axios
        .post("user_exsit", {
          username: this.formSignup.username
        })
        .then(res => {
          console.log(res);
          return new Promise(resolve => {
            resolve(res.data);
          });
        });
    },

你可能感兴趣的:(vue.js)