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;
})
希望对您有所帮助。
我有这个 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;
})
希望对您有所帮助。