2

如何打破 AngularJS 中的链式承诺?

这是 app.js 中的评论,我想打破链。

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

4

2 回答 2

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

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

于 2014-06-29T19:08:13.053 回答
0

通常,您不返回结果(在您的案例响应中),您应该返回一个承诺。然后你用你的结果来解决这个承诺:

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

或拒绝承诺

deferred.reject(response);

或者回馈一个已经被拒绝的承诺

return $q.reject(response)

如果您拒绝或解决承诺,则将在下一个 then 语句中调用成功或错误函数。

于 2014-06-29T19:09:23.920 回答