La expresión rush se utiliza para ejecutar un bloque de dos o más expresiones async simultáneamente.
Cuando finaliza la subexpresión más rápida, se evalúa cualquier expresión que siga a rush, y las subexpresiones restantes continúan evaluando.
set WinnerResult = rush:
# Las tres funciones asíncronas se inician al mismo tiempo.
AsyncFunctionLongTime()
AsyncFunctionShortTime() # Esta ganará y se utilizará su resultado.
AsyncFunctionMediumTime()
# Se llama a la siguiente expresión una vez completada la función async más rápida (AsyncFunctionShortTime()).
# Todas las demás tareas de subexpresión (AsyncFunctionLongTime(), AsyncFunctionMediumTime()) continúan.
NextExpression(WinnerResult)
AsyncFunction4()
# Si alguna de las tareas de subexpresión de `rush` sigue en marcha cuando la AsyncFunction4 finaliza
# entonces se cancelan ahora.
El siguiente código muestra la sintaxis de la expresión rush.
expression0
rush:
slow-expression
mid-expression
fast-expression
expression1
El diagrama siguiente muestra el flujo de ejecución de las expresiones.

Uso de la expresión rush
Dónde puedes utilizar una expresión rush |
Contextos asíncronos |
Hora de invocación de la expresión rush |
Async |
Requisitos del bloque de código rush |
El cuerpo de la expresión rush debe tener al menos dos expresiones, y todas ellas deben ser asíncronas. |
Qué hace la expresión rush |
Es similar a race, pero las expresiones que se completan después de la primera finalización continúan. Si alguna de las expresiones se completa de forma efectiva en la misma actualización de la simulación, la expresión encontrada anteriormente que se completa rompe cualquier empate. Las expresiones incompletas continúan evaluándose hasta que se completan, o hasta que el contexto asíncrono que las rodea se completa, momento en el que se cancelan las expresiones perdedoras restantes (lo que ocurra primero). |
Cuando finaliza la expresión rush |
La expresión rush finaliza cuando termina la primera expresión del bloque de código. Puede ser la más rápida/la de menor longitud/la primera completada/la de menor tiempo para completar. |
Cuando se inicia la siguiente expresión después de rush |
Cualquier expresión que siga a la expresión rush se inicia cuando finaliza la expresión completada. |
Resultado de la expresión rush |
El resultado de una expresión rush es el resultado de la primera expresión completada. El tipo de resultado es el tipo compatible más común de todas las expresiones del bloque de código. |
Actualmente, no se puede utilizar una expresión rush en el cuerpo de una expresión de iteración como loop o for. Si se debe utilizar, entonces envuélvelo en una función asíncrona y haz que la expresión de iteración llame a esa función.