小编Mat*_*awk的帖子

如何使用.success和.error在Angularjs中扩展$ q promise

我在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;
        };
Run Code Online (Sandbox Code Playgroud)

在我的控制器中:

        promiseService.myPromise()
            .success(function(data){

                $scope.success= data;

            })
            .error(function(data){

                $scope.error = data;

            });
Run Code Online (Sandbox Code Playgroud)

我juste处理承诺的成功和错误($ q服务).我需要在很多其他服务中使用此代码,因此我希望使用自定义直接扩展$ q服务.

所以在我的服务中我想要这样的东西:

    var deferred = myPromiseService.$qCustom.defer();
    var promise = deferred.promise;

    deferred.resolve('success');
    deferred.reject('error');

    return promise;
Run Code Online (Sandbox Code Playgroud)

任何的想法?我发现在Angularjs中扩展过滤器的一些解释我的问题是找到扩展$ q的所有功能并添加我的自定义的好方法.

我从类似的东西开始,处理$ q开箱即用:

angular.module('myApp').service('myPromiseService', function($q){

  $qCustom = $q;  

});
Run Code Online (Sandbox Code Playgroud)

overriding extend promise angularjs angularjs-service

22
推荐指数
2
解决办法
8294
查看次数