Ich habe ein Array enthält etwa 20K Datensätze. Jeder Datensatz enthält eine verschlüsselte Spalte und der Rest nicht. Wenn ich mit Hilfe von for loop durch jeden Datensatz iteriere und die Entschlüsselungs-Callback-Funktion aufruft, kommt das Ergebnis später auf, daher ist der entschlüsselte Wert immer Null. Nach der Entschlüsselung möchte ich die gesamte Zeile in Excel-Tabelle schreiben und die Datei schließen, nachdem jedes Element im Array in die Datei geschrieben wurde. Was ist der beste Weg?Nodejs Iterate durch Array und schreibe in Datei
var myArray = [{name:'ABC',accountNumber:'hsjdhsj%^==='},{name:'BCD',accountNumber:'hsjdhsj%^==='}];
for(var i=0; i< myArray.length; i++){
myArray[i].decryptAccNumber = decrypt(myArray[i].accountNumber); // async way to decrypt it
res.write(myArray[i]); //Writing to excel file
}
res.close();
Jetzt enthält die Datei nur Name, Kontonummer, aber nicht entschlüsselte Kontonummer.
Jede beraten, wie man mit einer solchen Forderung gehen, die & async
---------- Edited of sync mischt --------------- ---------
var callbackCount = myArray.length;
for(var i=0; i< myArray.length; i++)
{
decrypt(myArray[i].accountNumber,function(decrypted){
myArray[i].decryptAccNumber=decrypted;
res.write(myArray[i]); //Writing to excel file
callbackCount--;
if(callbackCount === 0){
res.close();
}
});
}
Dies ist die Lösung bei https://gist.github.com/Grety/236c41acf006475f0eee768b64e4a7bc Auch gegeben, dachte ich, die gleiche Lösung, aber persönlich habe ich diese Lösung nicht wie, wie es um wie Arbeit aussieht. Gibt es einen anderen besseren Weg, dieses Problem als die Verwendung von Temp Variable wie CallbackCounter zu lösen? Das ist das genaue Problem, was ich gepostet habe. Danke an Kyrylo Slatin für die Veröffentlichung der GIT-URL mit genauem Problem.
Try für async.forEach wäre – Subburaj
Sie sollten alle async machen. Es gibt keine Möglichkeit, mehrere Bytes später auf Dateien zu korrigieren. Sie warten, bis die Entschlüsselung abgeschlossen ist. Und wenn es fertig ist (nicht klar, da Sie im Kern keinen Rückruf zum "entschlüsseln" angegeben haben), schreiben Sie in die Datei sowohl entschlüsselte Daten als auch solche, die synchron erhalten wurden –
schreiben Sie eine Rückruffunktion für diese oder entschlüsseln Sie zuerst alle und Schreiben Sie dann in die Datei – Asad