A expressão rush é usada para executar um bloco de duas ou mais expressões assíncronas simultaneamente.
Quando a subexpressão mais rápida é concluída, qualquer expressão depois de rush será avaliada e quaisquer subexpressões restantes continuarão a ser avaliadas.
set WinnerResult = rush:
# Todas as três funções assíncronas são iniciadas ao mesmo tempo
AsyncFunctionLongTime()
AsyncFunctionShortTime() # Será a vencedora, e seu resultado será usado
AsyncFunctionMediumTime()
# A próxima expressão é chamada após a conclusão da função assíncrona mais rápida (AsyncFunctionShortTime()).
# Todas as outras tarefas de subexpressão (AsyncFunctionLongTime(), AsyncFunctionMediumTime()) continuam.
NextExpression(WinnerResult)
AsyncFunction4()
# Se alguma tarefa de subexpressão `rush` ainda estiver em execução quando AsyncFunction4 for concluída
# agora serão canceladas.
O código a seguir mostra a sintaxe da expressão rush.
~~~(verse) expression0 rush: slow-expression mid-expression fast-expression expression1 ~~~
O diagrama abaixo mostra o fluxo de execução das expressões.

Uso da expressão rush
Onde você pode usar uma expressão rush |
Contextos assíncronos |
Tempo de invocação da expressão rush |
Assíncrono |
Requisitos para o bloco de código rush |
O corpo da expressão rush deve ter pelo menos duas expressões, e todas as expressões devem ser assíncronas. |
O que a expressão rush faz |
É semelhante a race, mas as expressões que são concluídas após a primeira conclusão continuam. Se alguma expressão efetivamente for concluída na mesma atualização de simulação, a expressão encontrada anteriormente que foi concluída desfará qualquer empate. Quaisquer expressões incompletas continuarão a ser avaliadas até que sejam concluídas ou até que o contexto assíncrono que as envolve seja concluído. Nesse ponto, todas as expressões perdedoras restantes serão canceladas; o que ocorrer primeiro. |
Quando a expressão rush é concluída |
A expressão rush é concluída quando a primeira expressão no bloco de código é concluída. Esta pode ser a mais rápida, a de menor comprimento, a de primeira conclusão ou a de menor quantidade de tempo para concluir. |
Quando a próxima expressão após rush começa |
Qualquer próxima expressão após a expressão rush será iniciada quando a expressão concluída terminar. |
Resultado da expressão rush |
O resultado de uma expressão rush é o resultado da primeira expressão concluída. O tipo de resultado é o tipo compatível mais comum de todas as expressões no bloco de código. |
Uma expressão rush atualmente não pode ser usada no corpo de uma expressão de iteração como loop ou for. Se for necessário que ela seja usada, inclua-a em uma função assíncrona e faça a expressão de iteração chamar essa função.