我正在使用異步瀑布。當我的一個函數調用callback(err)時,我的自定義異步回調被調用。在那裏我拋出了一個錯誤,希望它能夠在異步的try塊中被捕獲,但是這沒有發生。節點異步和異常處理
try {
async.waterfall([function1, function2], myAsyncCallback);
}
catch(err) {
console.log("THIS CODE IS NEVER EXECUTED.");
}
var function1 = function() {
...
//some error occurs:
callback(new Error(errMsg), errMsg);
...
}
var function2 = function() {
...
}
function myAsyncCallback(err, result) {
console.log("This code gets executed.");
if (err) {
console.log("This code gets executed too.");
throw new Error("I want this error caught at the top around the catch around async.waterfall()");
}
}
這是代碼格式化的問題:現在你'聲明* myAsyncCallback'裏面你'function1'的*,所以這是不是真的懂事代碼。你可以減少這個[mcve],人們可以複製粘貼到文件並運行在節點上看到你看到的相同的東西,而不是發佈代碼,保證不會顯示你的問題,因爲它不能運行? –
@Mike,他們實際上並不在彼此之內。更新了樣本,希望能夠說清楚。你應該能夠刪除「...」來測試它。 – user994165
我添加了一個答案,但可能需要更深入瞭解所調用的函數。我發佈了我的工作代碼,這看起來很像你的例子! – clay