获取多个集合的骨干错误处理

时间:2014-12-19 05:18:38

标签: jquery backbone.js

我使用非核心的调用方法

在骨干中获取多个集合
var cols = [kf.Collections.invoices, kf.Collections.quotes, kf.Collections.bankaccounts, kf.Collections.invoicepaymentmethods];

var colsComplete = _.invoke(cols, 'fetch');
$.when.apply(null, colsComplete).then(callback);

问题我面临的问题是即使由于API错误而导致特定集合的获取失败,它也会恢复获取剩余集合。

如果我的API返回" UnAuthorized 401"有什么办法可以停止提取其他集合吗?

1 个答案:

答案 0 :(得分:1)

可以使用相同的下划线invoke方法实现针对您的问题的最快速和简单的解决方案,以中止失败回调中的所有承诺:

var cols = [kf.Collections.invoices, kf.Collections.quotes, kf.Collections.bankaccounts, kf.Collections.invoicepaymentmethods];

var colsComplete = _.invoke(cols, 'fetch');

$.when.apply(null, colsComplete).then(doneCallback, function () {
    _.invoke(colsComplete, 'abort'); 
});

这将在所有承诺上调用abort方法。但我想你不需要在已经失败的承诺或已完成的请求上调用abort方法。

在这种情况下,只需检查promise对象的readyState并根据readyState值中止它。