У меня есть это дословно в простом сценарии:
Promise.all(links.map(function (l) {
return Promise.resolve(require(l).r2gSmokeTest())
.then((v:any) => ({path: l, result: v}));
}))
.then(function(results){
})
.catch(function(e){
}):
проблема в том, что если вызов require()
выдает ошибку по какой-либо причине, цепочка обещаний не поймает ее.
- это самое простое, что нужно сделать, чтобы избежать оборачивания Promise.all в функцию, например, так:
const getAllPromises = function(links){
return Promise.resolve(null).then(function(){
return Promise.all(links.map(function (l) {
return Promise.resolve(require(l).r2gSmokeTest())
.then((v:any) => ({path: l, result: v}));
}));
мне кажется, что, возможно, Promise.all должен иметь другой API, что-то вроде:
Promise.all(function(){
return values.map(v => whatever);
});
таким образом любые ошибки могут быть перехвачены, если Promise.all не вызывается в цепочке Promise ...