簡體   English   中英

解決angular js中的promise並將其設置為另一個工廠

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM