[英]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.