Promise.any() — новое предлоежние в ECMAScript
Как-то я пропустил это небольшое событие. В январе появилось предложение Матиаса Байненса о добавлении в стандарт JavaScript нового метода промисов any()
.
Promise.any()
сигнализирует о том, что один из обрабатываемых промисов был успешно разрешён. Этот метод похож на метод Promise.race()
, но отличается тем, что не завершает работу, если был отклонён один из промисов. Отклонение Promise.any()
происходит только тогда, когда все обрабатываемые промисы были отклонены. Вот небольшой пример, как работает этот метод:
const promises = [
fetch('/endpoint-a').then(() => 'a'),
fetch('/endpoint-b').then(() => 'b'),
fetch('/endpoint-c').then(() => 'c'),
];
try {
const first = await Promise.any(promises);
// Один из промисов был успешно разрешён, например 'b'
// При этом и 'a', и 'c' могли быть отклонены
console.log(first);
} catch (error) {
// Все промисы были отклонены
console.log(error);
}
Предложение находится на первом этапе рассмотрения в TC39. И я пока не вижу причин, почему его могут выкинуть из стандарта.
UPD: Только что обнаружил, что соавтор предложения Сергей Рубанов — ведущий канала @juliarderity (спецификации и другие горячие новости из мира web).