--- 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
асинхронно будет отклонено в одном из двух вариантов (которые еще не были согласованы): либо
Specification |
---|
ESNext Promise.any Proposal |
{{Compat("javascript.builtins.Promise.any")}}