Ich möchte große Datei Zeile für Zeile lesen und fügen Sie die Daten in DB speichern. Mein functon gibt ein Promise zurück, in dem es erstellt wurde, und löste es, wenn Ereignis aufgerufen wurde, aber ich möchte es nicht wirklich, weil es in stream.on('data')
Promise.map()
auf jeder Zeile produziert, und ich möchte sicher sein, dass alle Einfügeoperationen abgeschlossen sind vor resolve()
aufgerufen. Wie kann ich in diesem Fall die richtige Kette herstellen?Promise kombinieren Stream
var loadFromFile = (options) => new Promise(function (resolve, reject) {
let stream = fs.createReadStream(options.filePath, {
flags: 'r',
});
stream.on('data', (chunk) => {
/* process data chunk to string Array */
Promise.map(lines, (line) => {
/* process and insert each line here */
})
.catch((err)=>{
reject(err);
});
});
stream.on('end',() => {
if (someBuisnessLogicCheckHere) {
reject('Invalid data was found in file');
}
resolve(); // Here I am not sure, that all inserts for each chunk in Promise.map was completed
});
});
Sie Code benötigen und diese dann viel klarer zu sein. –
fügen Sie etwas Code, es ist einfach, wie ich früh – Dmitriy
@ Dmitriy beschreiben: Und doch, zitieren Sie es lassen Sie mich Ihre Frage beantworten. Code ist 1024 Wörter wert! –