Ich möchte die gleiche Funktion dreimal mit Javascript Versprechungen ausführen. Bei jedem Aufruf der Funktion wird eine Textdatei Zeile für Zeile gelesen und die Antwort für jede Zeile in eine andere Textdatei geschrieben. Ich möchte Javascript versprechen, bis die vorherige Funktion fertig ist, aber aus irgendeinem Grund führt es einfach die drei Funktionen gleichzeitig aus und schreibt dabei gleichzeitig auf drei Dateien. Da ich eine riesige Datei bearbeite, dauert das Schreiben in drei Textdateien sehr lange.Wie kann ich die gleiche Funktion mit Javascript Versprechen ausführen?
Kann mir bitte jemand helfen, herauszufinden, wie man das richtig macht? Ich bin neu bei Promises und brauche all die Hilfe, die ich bekommen kann.
Hier ist mein Code:
function verifyTransactions(fileName,functionName,obj,depth){
var rd = readline.createInterface({
input: fs.createReadStream('../paymo_input/stream_payment.csv'),
output: process.stdout,
terminal: false
});
rd.on('line', function(line) {
var userData = extractUserData(line)
if (userData !== undefined){
var id1 = userData[0], id2 = userData[1];
if (obj[id1]){
console.log(id1)
fs.appendFileSync('../paymo_output/'+fileName +'.txt',functionName(obj,id1,id2,depth)+"\n", "UTF-8",{'flags': 'a'});
}
else{
console.log("nope")
fs.appendFileSync('../paymo_output/'+fileName+'.txt', "unverified"+"\n", "UTF-8",{'flags': 'a'});
}
}
});
rd.on('end',function(){
console.log("ON TO THE NEXXTTTTT")
})
}
Promise.resolve("output1")
.then(function(file){
verifyTransactions(file,pastTransaction,userTransactions);
console.log("WRITING TO FILE TWO SOON")
return "output2";})
.then(function(file){
verifyTransactions(file,breadthFirstSearch,userTransactions,2);
return "output3";})
.then(function(file){
verifyTransactions(file,breadthFirstSearch,userTransactions,4);
return "FINITO!!!";})
.then(function(file){
console.log(file);
})
Ich habe versucht, was du vorgeschlagen hast, aber nur die erste Funktion läuft. Muss ich provide.resolve (returnvalue) haben? Kann der Rückgabewert etwas wie "Fertig" sein? – CatherineAlv
Dan danke für Ihre Hilfe! Ich habe die oben vorgeschlagenen Änderungen vorgenommen. Ich erkannte auch, dass mein Hauptproblem darin bestand, dass resolve() nie zurückgegeben wurde, da rd.on ('end' ... nicht existierte. Es sollte rd.on sein ('close', ...) – CatherineAlv