JavaScript Promise.any() — перша УСПІШНА обіцянка
Promise.any() повертає результат першої успішної обіцянки, а невдалі просто ігнорує.
Загальний опис
Різниця з race тут принципова, і на ній легко обпектися. race віддає першу, що завершилась — навіть якщо вона впала. any чекає на першу, що вдалась, і падає лише тоді, коли впали геть усі.
Типове застосування — кілька дзеркал одного ресурсу: беремо те, що відповіло першим, а решта хай собі падає.
Якщо не вдалась жодна, any кидає особливу помилку — AggregateError, у полі errors якої лежать усі причини невдач.
Переглядачі
| Переглядач | ||||||
|---|---|---|---|---|---|---|
| any | 85+ | 79+ | 14+ | 71+ | 85+ | - |
| Переглядач | ||||
|---|---|---|---|---|
| any | 85+ | yes | yes | 14+ |
Приклади
+ запропонувати свій приклад у пісочниці
Кілька дзеркал — беремо те, що відповіло першим.
// top-level await працює лише в модулях — тут той самий код в async-функції
(async () => {
try {
const data = await Promise.any([
fetch('https://mirror-1.example/data').then(r => r.json()),
fetch('https://mirror-2.example/data').then(r => r.json()),
fetch('https://mirror-3.example/data').then(r => r.json()),
]);
console.log('Перше вдале дзеркало:', data);
} catch (error) {
// не вдалось ЖОДНЕ
console.error(error.errors); // масив усіх причин
}
})();
Коментарі
Коментарів ще немає — будьте першим!