В чем разница между методами Promise.race и Promise.any

«В чем разница между методами Promise.race и Promise.any» — вопрос из категории Асинхронность, который задают на 10% собеседований Frontend Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Promise.race и Promise.any работают с массивом промисов, но ведут себя по-разному:

  1. Promise.race
    Возвращает первый успешно выполненный или отклоненный промис.
    Пример:
    Promise.race([
      Promise.reject('Error'),
      Promise.resolve('Success')
    ]).catch(console.log); // 'Error'
  1. Promise.any (ES2021)
    Возвращает первый успешно выполненный промис. Если все отклонены — возвращает AggregateError.
    Пример:
    Promise.any([
      Promise.reject('Error1'),
      Promise.resolve('Success')
    ]).then(console.log); // 'Success'

Ключевое отличие: race реагирует на первый завершенный промис (успех/ошибка), а any — только на первый успешный. Если все промисы отклонены — race вернет первую ошибку, а anyAggregateError.