我在 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;
});