我在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; });
我juste处理承诺的成功和错误($ 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; });
这是@jessegavin离职的完整解决方案。
var myApp = angular.module("myApp",[]); myApp.config(function ($provide) { $provide.decorator('$q',function ($delegate) { var defer = $delegate.defer; $delegate.defer = function () { var deferred = defer(); deferred.promise.success = function (fn) { deferred.promise.then(function(response) { fn(response.data,response.status,response.headers); }); return deferred.promise; }; deferred.promise.error = function (fn) { deferred.promise.then(null,function(response) { fn(response.data,response.headers); }); return deferred.promise; }; return deferred; }; return $delegate; }); });
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。