--- title: Promise.any() slug: Web/JavaScript/Reference/Global_Objects/Promise/any translation_of: Web/JavaScript/Reference/Global_Objects/Promise/any ---
Метод Promise.any()
принимает итерируемый объект содержащий объекты промисов {{JSxRef("Promise")}}. Как только один из промисов (Promise)
выполнится успешно (fullfill
), метод возвратит единственный объект Promise
со значением выполненного промиса. Если ни один из промисов не завершится успешно (если все промисы завершатся с ошибкой, т.е. rejected
), тогда возвращённый объект Promise будет отклонён (rejected
) с одним из значений: массив содержащий причины ошибки (отклонения), или {{JSxRef("AggregateError")}} — подкласс {{JSxRef("Error")}}, который объединяет выброшенные ошибки вместе. По существу, метод Promise.any()
является противоположностью для {{JSxRef("Promise.all()")}}.
Warning! The Promise.any()
method is experimental and not fully supported by all browsers. It is currently in the TC39 Candidate stage (Stage 3).
Promise.any(iterable);
iterable
Метод полезен, когда нужно вернуть первый исполненный промис. После того как один из промисов будет исполнен, метод не будет дожидаться исполнения остальных. В отличие от {{JSxRef("Promise.all()")}}, который содержит массив(Array) значений исполненных промисов, Promise.any()
содержит только одно значение (при условии, что хотя бы один из промисов исполнен успешно). Такой подход может быть выгодным, когда нужно, чтобы выполнился только один промис, неважно какой. Также, в отличие от {{JSxRef("Promise.race()")}}, который возвращает промис, содержащий значение первого завершённого(resolved или rejected), этот метод возвращает промис содержащее значение первого успешно выполненного(resolved) промиса. Метод будет игнорировать исполнение промисов с ошибкой(rejection) вплоть до первого исполненного успешно (fullfilment).
Если один из промисов исполнится успешно, возвращённый промис асинхронно исполнится успешно со значением выполненного промиса, независимо от завершения остальных промисов.
Promise.any
асинхронно исполнится успешно.Если все переданные промисы будут отклонены (rejected), Promise.any
асинхронно будет отклонено в одном из двух вариантов (которые ещё не были согласованы): либо
{{Compat}}