У меня есть массив циклов из promises, поэтому я использовал Promise.all, чтобы пройти через них и затем вызвать потом.
let promises = [];
promises.push(promise1);
promises.push(promise2);
promises.push(promise3);
Promise.all(promises).then((responses) => {
for (let i = 0; i < promises.length; i++) {
if (promise.property === something) {
//do something
} else {
let file = fs.createWriteStream('./hello.pdf');
let stream = responses[i].pipe(file);
/*
I WANT THE PIPING AND THE FOLLOWING CODE
TO RUN BEFORE NEXT ITERATION OF FOR LOOP
*/
stream.on('finish', () => {
//extract the text out of the pdf
extract(filePath, {splitPages: false}, (err, text) => {
if (err) {
console.log(err);
} else {
arrayOfDocuments[i].text_contents = text;
}
});
});
}
}
обещание1, обещание2 и обещание3 - это некоторые HTTP-запросы, и если один из них является приложением /pdf, я пишу его в поток и разбираю текст из него. Но этот код запускает следующую итерацию перед анализом теста из pdf. Есть ли способ заставить код ждать, пока конвейер в поток и извлечение не закончатся, прежде чем перейти к следующей итерации?