我有以下服务代码:
function (Api) {
var user = null;
return {
checkUser: function() {
Api.checkAuth().then(function(userObj) {
user = userObj;
})
},
isLogin: function() {
this.checkUser();
return !(user == null);
}
}
}
和app.js就是这样:
app.run(AuthInfo) {
log(AuthInfo.isLogin());
if (AuthInfo.isLogin())....
}
问题是在控制台中我只能看到错误。 因为checkUser()函数工作异步,并且当isLogin()返回用户异步请求时没有完成。 如何编辑我的代码以使用它,我需要在ng-show和其他服务和控制器中使用AuthInfo.isLogin()
答案 0 :(得分:0)
checkUser
返回承诺,您必须在回调中检查用户是否存在:
类似的东西:
function (Api) {
var user = null;
return {
checkUser: function () {
return Api.checkAuth().then(function (userObj) {
user = userObj;
})
},
isLogin: function() {
return this.checkUser().then(function () {
return user !== null;
});
}
}
}
AuthInfo.isLogin().then(...)
请注意,没有必要同时使用两种方法:
function (Api) {
return {
isUserLogged: function () {
return Api.checkAuth().then(function (userObj) {
return userObj !== null;
})
}
}
}
AuthInfo.isUserLogged().then(...)