我正在使用parallel function in Async.js,由於某種原因,最終回調沒有執行,我也沒有看到任何地方發生錯誤。Async.js並行回調未執行
我動態創建的被傳遞給平行呼叫作爲這樣的功能的數組:
// 'theFiles' is an array of files I'm working with in a code-generator style type of scenario
var callItems = [];
theFiles.forEach(function(currentFile) {
var genFileFunc = generateFileFunc(destDir + "/" + currentFile, packageName, appName);
callItems.push(genFileFunc(function(err, results) {
if(err) {
console.error("*** ERROR ***" + err);
} else {
console.log("Done: " + results);
}
}));
});
async.parallel(callItems, function(err, results) {
console.log(err);
console.log(results);
if(err) {
console.error("**** ERROR ****");
} else {
console.log("***** ALL ITEMS HAVE BEEN CALLED WITHOUT ERROR ****");
}
});
然後,在外部功能(外正在執行上述在Foreach功能的)我有generateFileFunc()函數。
// Function that returns a function that works with a file (modifies it/etc).
function generateFileFunc(file, packageName, appName) {
return function(callback) {
generateFile(file, packageName, appName, callback);
}
}
我已經看了this SO post和它幫助我得到我在哪裏。但是最後的回調沒有被執行。並行調用中的所有項目正在執行。在最底層的gnerateFile(函數)內部,我稱之爲回調函數,所以這就是黃金。
任何人都有任何想法,爲什麼這可能無法正確執行?
最終結果是並行處理每個函數調用,然後在完成後通知我可以繼續執行一些其他指令。
謝謝!
你釘了它。出於某種原因,我一直告訴自己,我正在generateFileFunc調用中返回一個函數。但是,正如你所說的,在數組推送上,我正在執行方法而不是將函數作爲參數傳遞。很好的解釋。 –