0
很明顯,我在這裏做錯了什麼,但我沒有看到它。async.series中的rs.readFile排序問題
我把代碼縮小到了下面來說明我遇到的問題。使用async.series
我正在處理一組文件。對於每個文件,我閱讀它,然後對內容進行一些處理,然後繼續。如果我將readFile
調用更改爲readFileSync
,我會得到預期的輸出結果,但這不是因爲各種其他原因而在此工作的解決方案。
var fs = require('fs');
var async = require('async');
huh();
function huh() {
for (var i in [1,2]) {
async.series([
function (callback) { process('a', callback); },
function (callback) { process('b', callback); }
], function() { console.log('series done')});
console.log('done: ' + i);
}
}
function process(word, callback){
fs.readFile('whatever', function (err, content) {
console.log(word);
callback();
});
}
我期待什麼,當我運行上面的是:
a
b
series done
done: 0
a
b
series done
done: 1
但我得到的是
done: 0
done: 1
a
a
b
series done
b
series done
我在做什麼錯?
的console.log( '完成的:' + I);是同步所以起初,沒有什麼不對,你所期望的是fs.readFileSync,使用同步代碼來匹配你的期望 –
不幸的是,正如我在問題中指出的,我不能使用fs.readFileSync –
好吧,然後把所有進入async.series,我會在答案中詳細說明 –