[英]Resolve promise in angular js and set it for another factory
我有以下工廠
.factory('UserData', ['User', '$q', function(User, $q) {
var deferred = $q.defer();
return {
user: null,
get: function() {
var _this = this;
_this.user = User.get();
deferred.resolve(User.get());
return deferred.promise();
}
};
}]);
我的User工廠中有一些數據, User.get()
將重新運行數據。 我需要從分配給該user: null
UserData工廠中重新運行此數據user: null
解:
.factory('UserData', ['User', '$q', function(User, $q) {
var _factory = {};
_factory.user = null;
/* returns a promise that resolves to user value */
_factory.get = function() {
// return cached user as a resolved promise
if (_factory.user) return $q.resolve(_factory.user);
return User.get().then(function(user) { // chain User.get() promise
return _factory.user = user; // cache user value in _factory.user
});
};
return _factory;
}]);
我假設您要使用緩存的版本(如果已經填充了factory.user,則只需返回值)。 如果不是這種情況,您可以刪除緩存部分。
另外,我不知道您是否要在工廠中公開用戶變量。 如果不是這種情況,您可能只想聲明為變量(並同時更改_factory.user引用)以隱藏內部實現細節。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.