javascript - 停止 AngularJS promise 链

标签 javascript angularjs

我正在尝试找出一个好方法来表达“做所有这些事情,但在其中任何一个失败的情况下保释”

我现在拥有的:

var defer = $q.defer();

this
    .load( thingy ) // returns a promise

    .then( this.doSomethingA.bind( this ) )
    .then( this.doSomethingB.bind( this ) )
    .then( this.doSomethingC.bind( this ) )
    .then( this.doSomethingD.bind( this ) )

    .then( function(){
        defer.resolve( this );
    } );
    ;

return defer.promise;

我最终想要的是以某种方式捕获该链上的任何错误,以便我可以将其传递给上面的 defer promise。我并不特别关心语法是否与我上面的相似。

或者即使任何人都可以告诉我如何停止上述链。

最佳答案

您可以通过在任何 then 回调中返回被拒绝的 promise 来停止 angularjs 链。

load()
.then(doA)
.then(doB)
.then(doC)
.then(doD);

doAdoBdoCdoD 可以有这样的逻辑:

var doA = function() {
    if(shouldFail) {
        return $q.reject();
    }
}

关于javascript - 停止 AngularJS promise 链,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16847413/

相关文章:

javascript - 如何使用 jquery 检查一行中的所有文本框是否已填充

angularjs - 更改范围变量中的值后, Angular 表单验证无效

javascript - Angular ng-repeat 搜索对象的两个字段

javascript - angularui bootstrap datepicker 弹出窗口未在日期选择时关闭

Javascript函数返回数组对象阈值之间的值

javascript - Greasemonkey 和 http-on-modify-request

javascript - 如何将 ng-model 从 Angular 1.6 组件传递到输入元素

javascript - 在 AngularJS 中对表列进行排序

javascript - 如何不断用新数据刷新图表?

javascript - Firestore云功能给出日志问题