在 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.get()
将重新运行这些数据。
我需要从分配给此 user: null
的 UserData 工厂重新运行此数据
解决方案:
.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 已经填充,则只需 return 值)。如果不是这种情况,您可以删除缓存部分。
此外,我不知道您是否希望将用户变量公开为工厂的一部分。如果不是这种情况,您可能只想将其声明为变量(并更改 _factory.user 引用)以隐藏内部实现细节。
我有以下工厂
.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.get()
将重新运行这些数据。
我需要从分配给此 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 已经填充,则只需 return 值)。如果不是这种情况,您可以删除缓存部分。
此外,我不知道您是否希望将用户变量公开为工厂的一部分。如果不是这种情况,您可能只想将其声明为变量(并更改 _factory.user 引用)以隐藏内部实现细节。