AngularJS Break承诺链

时间:2014-06-29 18:35:54

标签: angularjs angular-promise

如何打破AngularJS中的连锁承诺?

这里有app.js中的注释,我想打破链。

http://plnkr.co/edit/MBBWJGwPfy2Wz13yczvV?p=preview

2 个答案:

答案 0 :(得分:0)

使用defer.reject方法:

       var defer = $q.defer();

       /* .. */
       response.data.name = response.data.name + " error(2)";

        if(<drop me>){
           defer.reject( response );
            return defer.promise;
        }

        return response;
        /* .. */

通过这种方式,您将转到错误回调

参见 PLUNKER

  

请记住,您只能解决/拒绝承诺一次!

答案 1 :(得分:0)

一般情况下,您不会返回结果(在您的案例回复中),您应该返回一个承诺。然后你用你的结果解决了这个承诺:

var deferred = q.defer();
deferred.resolve(response);
return deferred.promise;

或拒绝承诺

deferred.reject(response);

或者回馈已被拒绝的承诺

return $q.reject(response)

如果您拒绝或解决了承诺,则会在下一个声明中调用成功或错误函数。