0
在文檔中我找不到在異步系列方法中處理錯誤的方法。 如何正確學習異步js,通常github維基百科對於不依賴於它的用戶而言,其平均值低於平均水平。如何處理asyncjs中的錯誤?
這裏是我的代碼:
function async1(cb,err) {
setTimeout(function() {
console.log(1);
cb();
}, 1000);
}
function async2(cb,err) {
setTimeout(function() {
// console.log(2);
throw new Error;
cb();
}, 1000);
}
function async3(cb,err) {
setTimeout(function() {
console.log(3);
cb();
}, 1000);
}
async.series([
async1,
async2,
async3
], function (err) {
console.log(err);
});
它只是終止,並拋出錯誤。
我幾個問題...
我是不是正確處理錯誤,顯然不正確,那麼有什麼不對?
For Async to work does the series used in series does it have have first parameter as callback?
如果是,那麼這是否意味着您不能將其與其他庫一起使用。因爲它們可能沒有回調作爲第一個參數。
節點回調並不是安全的,你不能僅僅以這種方式在它們內部拋出異常(例如承諾 - 順便說一句),你需要嘗試/捕獲它們並用錯誤'cb(new Error)調用cb'而不是投擲它。請參閱http://stackoverflow.com/questions/14301839/javascript-asynchronous-exception-handling-with-node-js –
我該如何處理asyncjs –
這不是async.js錯誤。該錯誤在setTimeout中。正如Benjamin所提到的,你不能從異步函數中拋出錯誤。而是將錯誤作爲參數傳遞給您的回調。 – slebetman