0
我有一个工厂对象,其中包含专用对象,它用于缓存使用工厂可用函数从API检索结果。角厂存储承诺结果
global.mainApp.factory('SessionFactory', function (UserEndpointsResource, SiteEndpointsResource) {
var data = {
/**
* @type {boolean|null}
*/
isLoggedIn: null
};
return {
isUserLoggedIn: function (callback) {
if (data.isLoggedIn != null) {
callback(data.isLoggedIn);
}
else {
UserEndpointsResource.isLoggedIn().$promise.then(function (res) {
var isUserLoggedIn = res.status == 1;
// Trying to set the result to the outer scope data variable
data.isLoggedIn = isUserLoggedIn;
callback(isUserLoggedIn);
}, function (failureData) {
data.isLoggedIn = false;
callback(false);
});
}
},
...
};
});
问题是,每次我调用isUserLoggedIn函数时,data.isLoggedIn始终为空。
如何更改promise函数内的工厂数据对象?
谢谢。
有没有机会实例化多个'SessionFactory's? – Bergi
Protip:[不存储承诺结果,存储承诺本身](http://stackoverflow.com/q/18744830/1048572) – Bergi
你是否检查过你的代码是否正在进入'data.isLoggedIn = isUserLoggedIn;'? –