Sagen wir zum Beispiel, ich möchte ein Nodejs-Programm schreiben, wo ich zwei oder drei unabhängige Teile wie fs.readdir, fs.copy, etc. an verschiedenen Orten, aber das Ergebnis alle drei Aktionen an a gesendet werden soll jSON-Datei wie folgt aus:Wie schreibe ich ein asynchrones Programm mit nodejs?
var fs = require('fs-extra');
var jsd = {
"act1" : false,
"act2" : false,
"act3" : false
}
fs.readdir(path1, function (err, files) {
if (err) jsd.act1 = err;
for (x in files) console.log(files[x]);
jsd.act1 = true;
});
fs.copy(path2, path3, function (err) {
if (err) jsd.act2 = err;
jsd.act2 = true;
});
fs.remove(path4, function (err) {
if (err) jsd.act3 = err;
jsd.act3 = true;
});
// all three of the above actions are independent, so it makes sense that all of them are executed asynchronously.
// Now we write jsd object to a json file; jsd's contents are dependent on the above actions though
fs.writeJson("./data.json", jsd, function (err, files) {
if (err) return console.error(err);
});
Wie kann ich sicherstellen, dass die richtigen Daten in die Datei eingetragen wird data.json, dh fs.writeJson ausführt, nachdem die Aktionen vorherigen, um es zuerst ausgeführt werden?
Ich kenne einen Weg zum Nest ist von allen, das heißt,
readdir() {
copy() {
remove() {
writeJson();
}
}
}
Aber in Callback-Hölle führen kann, so gibt es einen besseren Weg, dies zu tun?
Müssen Sie dies asynchron tun? Dies bedeutet nicht, dass Sie Dinge parallel tun. Sie können die Sync-Version dieser fs-Funktionen verwenden und es einfacher machen. –
verspricht. Hast du Versprechen gesehen? –
ja, ich weiß über synchrone Versionen von denen, aber dann werde ich nicht die asynchronen Eigenschaften dieser verwenden, für die Knoten für – user3248186