2014-12-19 65 views
4

我使用讀取骨幹多個集合undescore的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(callback); 

我面對的是,即使取到特定集合問題失敗,因爲API錯誤時,再取剩餘的集合。

如果我的API返回「UnAuthorized 401」,有什麼辦法可以阻止其他集合的獲取?您的問題

回答

1

最快和simples解決方案可以使用相同的下劃線的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方法。

在這種情況下,只需檢查承諾對象的readyState並根據readyState的值取消它。