La expresión rush se usa para ejecutar un bloque de dos o más expresiones asíncronas al mismo tiempo (simultáneamente).
Cuando se completa la subexpresión más rápida, se evalúa cualquier expresión que siga a rush y las subexpresiones restantes continúan evaluándose.
set WinnerResult = rush:
# Las tres funciones asíncronas se inician al mismo tiempo
AsyncFunctionLongTime()
AsyncFunctionShortTime() # Esta ganará y se utilizará su resultado
AsyncFunctionMediumTime()
# La siguiente expresión es llamada después de que la función asíncrona más rápida (AsyncFunctionShortTime()) se complete.
# El resto de tareas de subexpresión (AsyncFunctionLongTime(), AsyncFunctionMediumTime()) continua.
NextExpression(WinnerResult)
AsyncFunction4()
# Si alguna de las tareas de subexpresión de aceleración sigue en marcha cuando AsyncFunction4 finaliza
# entonces se cancelan ahora.
El siguiente código muestra la sintaxis para la expresión rush.
expression0
rush:
slow-expression
mid-expression
fast-expression
expression1
El siguiente diagrama muestra el flujo de ejecución para las expresiones.
(h:500)

Uso de la expresión de aceleración
Dónde puedes usar una expresión rush |
Contextos asíncronos |
Tiempo de invocación de la expresión rush |
Asíncrono |
Requisitos para el bloque de código rush |
El cuerpo de la expresión rush debe tener al menos dos expresiones y todas las expresiones deben ser asíncronas. |
Qué hace la expresión rush |
Es similar a race, pero las continúan ejecutándose las expresiones que se completan hasta después de que se completó la primera expresión. Si cualquier expresión se completa efectivamente en la misma actualización de simulación, la expresión que se encontró más temprano que se completa desempata. Cualquier expresión incompleta continúa evaluándose hasta que se completa o hasta que se completa el contexto asíncrono que las encierra; en este momento, las expresiones perdedoras restantes se cancelan, lo que ocurra primero. |
Cuando se completa la expresión rush |
La expresión rush se completa cuando se completa la expresión en el bloque de código. Esto se refiere a la duración más rápida, más corta, completada por primera vez o la menor cantidad de tiempo para completar. |
Cuando comience la siguiente expresión después de rush |
Cualquier expresión siguiente 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. |
Una expresión rush no se puede utilizar en el cuerpo de una expresión de iteración como loop o for. Si se debe utilizar, entonces envuélvela en una función asíncrona y haz que la expresión de iteración llame a esa función.