【发布时间】:2015-03-19 04:32:38
【问题描述】:
Angular 新手,可能使用错误的承诺。我有一个工厂返回一个承诺:
.factory('myData', ['$http', '$q', function($http, $q) {
var deferred = $q.defer();
$http.get('/path/to/endpoint')
.success(function(data) {
deferred.resolve(data);
})
.error(function(err) {
deferred.reject(err.what())
});
return deferred.promise;
}])
现在,如果我在某个地方注入我的工厂,我可以使用承诺:
.controller('myController', ['$scope', 'myData', function($scope, myData) {
myData.then(function(result) {
$scope.data = result;
});
}]);
这很好,但我开始在几个地方使用myData,我不想在我使用数据的每个指令和控制器中写一个新的.then。承诺解决后我不再关心它了,有什么方法可以让myData 在未解决的情况下返回承诺,但在解决完成后只返回结果?
换一种说法,myData 可以简单地成为解决后的.then result,还是我每次都必须写一个新的.then?
【问题讨论】:
-
您是否有可以返回的默认值,而不是已解决的承诺的值?
-
@SteveMitcham 当然,在这种情况下,一个空对象就可以了。
标签: javascript angularjs promise angular-promise