Усі чотири приймають масив Promise і запускаються паралельно, але по-різному вирішують, коли й чим завершитися:
Promise.all- чекає всі. Результат - масив значень у тому ж порядку. Перша ж помилка відхиляє весь результат (інші Promise продовжують виконуватися, але їхні результати губляться).Promise.allSettled- чекає всі, ніколи не відхиляється. Результат - масив об'єктів{status: 'fulfilled', value}або{status: 'rejected', reason}.Promise.race- результат першого, що завершився, хай успіхом, хай помилкою.Promise.any- перший успішний. Відхиляється зAggregateError, лише якщо відхилено всі.
// Усе потрібне для сторінки - інакше показати помилку
const [user, settings] = await Promise.all([getUser(), getSettings()]);
// Розіслати сповіщення й порахувати, скільки не дійшло
const results = await Promise.allSettled(recipients.map(send));
const failed = results.filter((r) => r.status === 'rejected').length;
// Тайм-аут
const data = await Promise.race([fetchData(), sleep(5000).then(() => { throw new Error('timeout'); })]);
// Перше доступне дзеркало
const file = await Promise.any(mirrors.map((url) => fetch(url)));
Нюанс race для тайм-ауту: «програлий» запит не скасовується, він продовжує виконуватися. Для справжнього скасування потрібен AbortController (у fetch - AbortSignal.timeout(5000)).