Метод JavaScript Promise.race()

Metod Javascript Promise Race



Метод Promise.race() — это встроенный метод JavaScript, который принимает в качестве аргумента итерацию обещаний и возвращает первое обещание, которое разрешено или отклонено. Метод Promise.race() вернет либо значение выполнения, либо причину отказа. Итерируемые объекты — это объекты, которые можно зацикливать, такие как массивы, строки и карты.

Что такое промисы?

Асинхронный код можно обрабатывать с помощью промисов. В качестве параметра они принимают функцию, известную как исполнитель. Когда обещание создается, исполнитель автоматически запускается асинхронно и возвращает значение, если оно выполнено, в противном случае он возвращает причину отклонения:

пусть example_promise знак равно новоеОбещание ( ( решить, отклонить ) => {
решать ( «Обещание выполнено» ) ;
} ) ;

пример_обещание. тогда ( р => приставка. журнал ( р ) ) ;







Асинхронный характер промисов:



пусть example_promise знак равно новоеОбещание ( ( решить, отклонить ) => {
решать ( «Обещание выполнено» ) ;
} ) ;

пример_обещание. тогда ( р => приставка. журнал ( р ) ) ;
приставка. журнал ( '1,2,3...' ) ;



Как использовать метод Promise.race()?

Передайте итерацию промисов методу Promise.race() и получите возвращаемое значение в переменной:





пусть выпускной1 знак равно новоеОбещание ( ( решить, отклонить ) => {
setTimeout ( ( ) => решать ( «Обещание выполнено» ) , 500 ) ;
} ) ;

пусть выпуск2 знак равно новоеОбещание ( ( решить, отклонить ) => {
setTimeout ( ( ) => отклонять ( «Обещание не может быть выполнено» ) , 250 ) ;
} ) ;

пусть темп знак равно Обещать. гонка ( [ выпускной1, выпускной2 ] ) ;

темп. ловить ( причина => приставка. журнал ( причина ) ) ;

В этом примере у нас было два промиса. Первое обещание было разрешено через 500 мс, а второе обещание было отклонено через 250 секунд. Поскольку второе обещание было первым, которое было разрешено или отклонено, оно было возвращено методом Promise.race().



Если аргумент, переданный методу Promise.race(), является пустой итерацией, то метод вернет вечно ожидающее обещание:

пусть темп знак равно Обещать. гонка ( [ ] ) ;

приставка. журнал ( температура ) ;

Если у итерируемого аргумента есть какие-либо значения, не являющиеся обещаниями, или обещания, которые уже были выполнены или отклонены, тогда метод будет останавливаться на первом значении в массиве:

пусть p1 знак равно новоеОбещание ( ( решить, отклонить ) => {
решать ( 'P1 решен' ) ;
} ) ;

пусть р2 знак равно новоеОбещание ( ( решить, отклонить ) => {
решать ( 'P2 решен' ) ;
} ) ;

пусть темп знак равно Обещать. гонка ( [ р1, р2 ] ) ;
темп. тогда ( ценность => приставка. журнал ( ценность ) ) ;

Метод Promise.race() проверяет как разрешенные, так и отклоненные промисы. У этого метода также есть другая альтернатива — метод Promise.any(), который можно использовать только для проверки выполненных обещаний.

Вывод

Метод Promise.race() используется для получения первого обещания, которое либо выполнено, либо отклонено из итерации обещаний. Обещание, которое выполнено или отклонено раньше, является возвращаемым значением Promise.race(). В статье подробно рассказывается о методе Promise.race().