[英]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);
并且总是返回undefined。 我究竟做错了什么?
如果要从此方法返回值,则必须从函数中返回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
在axios
工作,因此,由于您在promise之外返回returnValue
,因此您的函数正在返回returnValue
的当前值,该值是undefined
。
这是因为您要在发出请求之前返回该值。 您需要做出一个Promise,当它解决时,返回该值。
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;
})
希望这对您有所帮助。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.