我在AngularJS的自定义服务中编写了这段小代码。
在我的服务中:
在我的服务中:
var deferred = $q.defer();
var promise = deferred.promise;
deferred.resolve('success');
deferred.reject('error');
/* Handle success and error */
promise.success = function(fn) {
promise.then(function(response) {
fn(response);
});
return promise;
};
promise.error = function(fn) {
promise.then(null, function(response) {
fn(response);
});
return promise;
};
在我的控制器中:
promiseService.myPromise()
.success(function(data){
$scope.success= data;
})
.error(function(data){
$scope.error = data;
});
我只是处理来自承诺($q服务)的成功和错误。我需要在许多其他服务中使用这段代码,因此我想用自定义方式直接扩展$q服务。
因此,我希望我的服务能够像这样:
var deferred = myPromiseService.$qCustom.defer();
var promise = deferred.promise;
deferred.resolve('success');
deferred.reject('error');
return promise;
有什么想法吗?我找到了一些关于扩展Angularjs过滤器的解释,我的问题是找到一个好的方法来扩展$q的所有功能并添加自定义内容。
我从以下代码开始,它可以处理$q的默认行为:
angular.module('myApp').service('myPromiseService', function($q){
$qCustom = $q;
});
HttpPromise
的行为不同。HttpPromise
应该返回原始的 promise,而这段代码将返回一个新的 promise 以允许链式调用。 - vossad01