Проверяет понимание поведения Promise.any при отклонении всех переданных промисов и знание агрегатной ошибки AggregateError.
Promise.any — это статический метод, который принимает итерируемый объект промисов и возвращает новый промис. Он разрешается значением первого успешно выполненного промиса. Если же все промисы отклоняются, результирующий промис отклоняется с AggregateError, а не с ошибкой первого упавшего промиса.
const p1 = Promise.reject(new Error('fail 1'));
const p2 = Promise.reject(new Error('fail 2'));
Promise.any([p1, p2])
.then(value => console.log('Успех:', value))
.catch(err => {
console.log(err.name); // AggregateError
console.log(err.errors); // [Error: fail 1, Error: fail 2]
});
// Если хотя бы один успешен:
Promise.any([p1, Promise.resolve('ok')])
.then(v => console.log(v)); // 'ok'
Promise.any удобен, когда нужно получить результат из нескольких источников и достаточно первого успешного ответа: например, запрос к нескольким зеркалам API, резервным серверам или кэшам. Если все источники недоступны, AggregateError позволяет увидеть все причины сбоя сразу.
Итог: используйте Promise.any, когда важен первый успешный результат, а не все результаты сразу; при полном провале обрабатывайте AggregateError и его массив errors.
Frontend developer
Ментор по Frontend
Полное сопровождение до оффера — без дорогих курсов, с оплатой после трудоустройства
Записаться на консультацию