Предположение: у OP нет проблем с чтением файлов, но есть аспекты синхронизации.Я использовал 'BUGUTILS.blocker (3)', чтобы имитировать чтение файла синхронизации.
results.forEach(result=>{
console.log("\t",result);
})
Может быть заменено на "finish (...)" или как угодно
"use strict";
const results = [];
const blockingPromise = ()=>{
return new Promise((resolve,reject)=>{
BUGUTILS.blocker(3);
if(Math.random()<.5){
return reject('Less than 50%');
}
return resolve('Greater than or equal to 50%');
})
}
const recurseBlockingPromise= (count)=>{
if(!count || count==0){
console.log('all done')
}else{
recurseBlockingPromise(--count);
//BUGUTILS.blocker(3);
blockingPromise()
.then(r=>{
results.push(r)
console.log('promised resolved',r);
}).catch(e=>{
results.push(e)
console.log('promised rejected',e);
})
}
}
const BUGUTILS = require('./debug-utils');
console.log('Before')
let p = new Promise((resolve,reject)=>{
recurseBlockingPromise(3);
return resolve('All Good')
}).then(r=>{
console.log('finished no error');
results.forEach(result=>{
console.log("\t",result);
})
//console.log("\t" ,results.join("\n\t"),"\t");
}).catch(e=>{
console.log('Finsished with error',e);
})
console.log('after')
Если вы запустите приведенный выше код, заменив синхронный вызов на «BUGUTILS.blocker (3)», вы увидите цепочку событий.Оператор вывода «После» выполняется до завершения всех асинхронных вызовов, но сценарий не завершается, пока все обещания не будут разрешены.