如何使用.succes和.error在Angularjs中扩展$q promise
发布时间:2020-12-17 08:25:14 所属栏目:安全 来源:网络整理
导读:我在AngularJS的定制服务中写了这个小代码。 在我的服务: var deferred = $q.defer(); var promise = deferred.promise; deferred.resolve('success'); deferred.reject('error'); /* Handle success and error */ promise.success = function(fn) { promis
我在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; });
这是一个完整的解决方案,在@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; }); }); (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- 将unix文件备份到不允许chgrp / chown等的文件系统
- twitter-bootstrap – 将背景颜色和填充添加到Twitter的引导
- angularjs – transcluded组件无法访问其父级所需的控制器
- WebService出现因URL 意外地以""结束,请求格式无法
- Angular 2中的语法高亮显示
- 如何在Scala中组合Option值?
- scala – 以类型安全的方式将Seq [String]转换为case类
- angularJS form表单验证
- Angular2 UrlSearchParams如何使用括号为同一个参数创建多个
- shell脚本:查看KVM虚拟机中的网卡信息(不需要进入启动或进