我在变量中存储一个布尔值以检查用户是否是管理员,在我调用服务的函数中我可以接收结果值(true或false),但是在变量vm.isAdmin im中得到一个未定义的。
vm.isAdmin = accountType("admin");
function accountType(type){
UserService.isAccount(type).then(
function (result) {
console.log("result");
console.log(result);
return result;
}
);
}
答案 0 :(得分:1)
UserService.isAccount返回promise并通过在then方法中设置匿名函数来使用它,但是你的main函数不一样,在accountType函数中使用的匿名函数被称为异步,所以在你的函数accountType结束之后结果会很多。您的accountType函数也应该返回promise或使用回调函数。
尝试这种方式(回调函数):
function accountType(type,funcYes,funcNo){
UserService.isAccount(type).then(
function (result) {
if (result===type)//change this if
funcYes();
else
funcNo();
}
);
}
示例用法:
accountType("admin",function(){
//code for yes
},function(){
// code for no
});
答案 1 :(得分:1)
UserService.isAccount
似乎会返回一个承诺,所以你必须这样使用它:
UserService.isAccount('admin')
.then(function (result) {
vm.isAdmin = result;
});
因此,结果在可用时分配。