Sobes.tech
Middle+
27

Promise.race пен Promise.any арасындағы айырмашылық неде?

Сұралған компаниялар
Ifellow

AI-дан жауап

sobes.tech AI

Promise.race и Promise.any — это методы для работы с несколькими промисами, но они отличаются по логике:

  • Promise.race(promises) возвращает результат первого промиса, который завершится (успешно или с ошибкой). То есть, как только любой из промисов выполнится или отклонится, race завершится с этим результатом.

  • Promise.any(promises) возвращает результат первого успешно выполненного промиса. Если все промисы отклоняются, тогда any отклоняется с AggregateError.

Пример:

const p1 = new Promise((_, reject) => setTimeout(() => reject('Ошибка'), 100));
const p2 = new Promise(resolve => setTimeout(() => resolve('Успех'), 200));

Promise.race([p1, p2])
  .then(console.log) // Выведет 'Ошибка' (первый завершившийся промис)
  .catch(console.error);

Promise.any([p1, p2])
  .then(console.log) // Выведет 'Успех' (первый успешно завершившийся промис)
  .catch(console.error);