我試圖用async
遍歷異步函數數組中的圖像目錄。async.each/forEachOf在不調用回調的情況下進入下一個迭代
async.waterfall([
function(callback){
async.forEachOf(waterfallObj.sizeDirs, function(sizeDir, index, cb){
//get image files
fs.readdir(path.join(__dirname, sizeDir), function(err, files){
tempFiles = files;
console.log(index); //0 1 2 3 4
//cb();
});
});
callback(null);
}, /*more functions*/
]);
的想法是,我不想做下一個迭代的forEachOf
循環,直到readdir
完成讀取文件。據我瞭解,forEachOf
不會進入其循環的下一個循環,直到它的回調被調用(就像異步waterfall
或series
中的每個函數一樣。但是即使cb()
註釋掉了,就像我上面所說的,我仍然看到索引打印了5次。爲什麼在第一次迭代時不能停止?如果cb
沒有這樣做,我如何確保readdir在下一次迭代之前完成?cb
應該做什麼,如果不是這樣?(我也有同樣的效果使用async.each
。我應該使用本機forEach
也許吧?
*「爲什麼不停止第一次迭代」*因爲它不是像'async.series'那樣工作的。這就是爲什麼有'async.forEachOfSeries'方法。 –