Javascript 函数总是 return 未定义

Javascript function always return undefined

我有这个 vue2 代码:

checkUser2() {
    var returnValue;
    axios.get(`api/users/CheckUsername/${this.username}`)
          .then(response => {
              returnValue = response.data.error === 0;
          }, errorCallBack => {
              returnValue = false;
          });
    return returnValue;
}

我称之为:

var a = this.checkUser2();
console.log(a);

它总是returns未定义。我做错了什么?

如果你想 return 这个方法的值,那么你必须 return 从函数中 promise 并使用回调来成功捕获结果。

checkUser2() {
    return axios.get(`api/users/CheckUsername/${this.username}`)
      .then(response => response.data.error === 0, errorCallBack => false);
}

当你调用它时:

this.checkUser2().then(value => console.log(value))

我对 vue2 一无所知,但我知道 axios 对承诺有效,所以由于你在承诺之外返回 returnValue,你的函数返回 [= 的当前值11=],也就是 undefined.

这是因为您在发出请求之前return输入值。你需要做一个承诺,当它解决时,return 值。

checkUser2() {
  return new Promise((resolve, reject) => {

    var returnValue;
    axios.get(`api/users/CheckUsername/${this.username}`)
    .then(response => {
      returnValue = response.data.error === 0;
      resolve(returnValue);
    }, errorCallBack => {
      returnValue = false;
      reject(returnValue);
    });
  });
}

那么你只需要这样调用它就可以得到值:

this.checkUser2().then(val => {
 a = val;
})

希望对您有所帮助。