Ich bin sehr neu in der Welt von Node.js und seine asynchronen Verhaltensweisen.Node.js: Das Versprechen wurde aufgelöst, bevor der Aufruf von resolve() erfolgt?
Ich versuche eine Datei zu nehmen, eine Kopie davon zu speichern, eine Zeile an die kopierte Datei anzuhängen und die kopierte Datei zu verwenden - in dieser Reihenfolge.
Die grob, was ich jetzt habe ...
var first = new Promise(function(resolve, reject) {
console.log("1");
var readStream = fs.createReadStream("file.txt");
var writeStream = fs.createWriteStream("file-copy.txt");
readStream.on("end", function() {
writeStream.end();
});
var pipeAction = readStream.pipe(writeStream);
pipeAction.on("close", function() {
console.log("2");
resolve();
});
});
var second = new Promise(function(resolve, reject) {
console.log("3");
fs.appendFile("file-copy.txt", "\nA NEW LINE TO INSERT", function (err) {
});
console.log("4");
resolve();
});
var third = new Promise(function(resolve, reject) {
// do something with the modified, copied file
console.log("5");
});
first.then(second).then(third);
Die Ausgabe zeigt 1 3 4 5 2 statt 1 2 3 4 5. Kann einige Lichter jemand auf teilen, warum "ersten" war in der Lage auflösen, bevor "2" gedruckt wurde?
Danke!
Die Funktion wird sofort ausgeführt, wenn das Versprechen erstellt. –
Macht Sinn, danke! – S200