我使用非核心的调用方法
在骨干中获取多个集合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"有什么办法可以停止提取其他集合吗?
答案 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
值中止它。