Ожидание завершения работы всех или нескольких promise в JavaScript
6

Может случиться так, что возникнет нужда в ожидании завершения нескольких промисов или всех независимо от того будут ли они успешно разрешены или отклонены.

Ожидание завершения работы нескольких promise в JavaScript

Может случиться так, что возникнет нужда в ожидании завершения нескольких промисов. Для того чтобы дождаться выполнения нескольких промисов, можно воспользоваться методом Promise.all(). При работе с Promise.all() важно знать о том, что этот метод, если хотя бы один из переданных ему промисов будет отклонён, выбросит ошибку. В результате окажется, что Promise.all() не дождётся завершения работы всех промисов.

//step1
const PromiseArray = [
    Promise.resolve(100),
    Promise.reject(null),
    Promise.resolve("Data release"),
    Promise.reject(new Error('Something went wrong'))];
//step2
Promise.all(PromiseArray)
.then(data => console.log('all resolved! here are the resolve values:', data))
.catch(err => console.log('got rejected! reason:', err));

Ожидание завершения работы всех promise в JavaScript

Если же вам нужно дождаться завершения работы всех промисов, независимо от того, будут ли они успешно разрешены или отклонены, это значит, что вам стоит прибегнуть к методу Promise.allSettled(). Этот метод имеется в окончательно согласованной версии стандарта ES2020.

const PromiseArray = [
    Promise.resolve(100),
    Promise.reject(null),
    Promise.resolve("Data release"),
    Promise.reject(new Error('Something went wrong'))];
Promise.allSettled(PromiseArray).then(res =>{
console.log(res);
}).catch(err => console.log(err));