Klar mache ich hier etwas falsch, aber ich sehe es nicht.rs.readFile in async.series Sequencing-Problem
Ich habe meinen Code reduziert, um das Problem zu illustrieren, das ich habe.
Mit async.series
Ich verarbeite eine Reihe von Dateien. Für jede Datei lese ich es und mache etwas mit dem Inhalt und gehe weiter. Wenn ich den readFile
Aufruf von readFileSync
ändere, bekomme ich die erwartete Ausgabe, aber das ist keine Lösung, die hier aus einer Vielzahl anderer Gründe funktionieren wird.
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();
});
}
Was ich erwarte, wenn ich die oben ausgeführt ist:
a
b
series done
done: 0
a
b
series done
done: 1
Aber was ich bekommen ist
done: 0
done: 1
a
a
b
series done
b
series done
Was mache ich falsch?
console.log ('gemacht:' + i); ist also erstmal sync, da ist nichts verkehrt, was du erwartest ist fs.readFileSync, nutze sync code um deine erwartungen zu erfüllen –
leider, wie ich in der frage notiere, kann ich fs nicht verwenden. file_read –
ok, dann put alle in async.series, werde ich in der Antwort detailliert –