如何在评估条件之前停止执行,此代码始终返回undefined:
function test() {
var allGood;
account.isUserAuthenticated().then(function(data) {
if (data) {
allGood = false;
} else {
allGood = true;
}
});
return allGood;
}
答案 0 :(得分:4)
您正在返回在异步调用(promise)中设置的结果,这意味着首先返回allGood
(这就是为什么它是undefined
),然后在某个时候它实际获得一个值。你应该做的是从函数中返回承诺本身:
function test() {
return account.isUserAuthenticated().then(function(data) {
if (data) {
return false;
} else {
return true;
}
});
}
然后如果你跑:
test().then(function(allGood) {
if (allGood) {
// user is authenticated
} else {
// user is not authenticated
}
});