Очевидно, что я делаю что-то неправильно здесь, но я этого не вижу.rs.readFile в async.series проблема секвенирования
Я уменьшил свой код до нижнего, чтобы проиллюстрировать проблему, которую я имею.
Использование 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 ('сделано:' + я); синхронизация так, во-первых, нет ничего плохого, что вы ожидаете от fs.readFileSync, используйте код синхронизации для соответствия вашему ожиданию –
, к сожалению, как я отмечаю в вопросе, я не могу использовать fs.readFileSync –
ok, а затем положить все в async.series, я подробно расскажу –