L'espressione rush viene utilizzata per eseguire un blocco di due o più espressioni async simultaneamente.
Quando la sottoespressione più veloce viene completata, viene valutata qualsiasi espressione che segue il rush e tutte le sottoespressioni rimanenti continuano a valutare.
set WinnerResult = rush:
# Tutte e tre le funzioni asincrone si avviano contemporaneamente
AsyncFunctionLongTime()
AsyncFunctionShortTime() # Questa vincerà e il suo risultato verrà utilizzato
AsyncFunctionMediumTime()
# L'espressione successiva viene chiamata dopo il completamento della funzione asincrona più veloce (AsyncFunctionShortTime()).
# Tutte le altre attività di sottoespressione (AsyncFunctionLongTime(), AsyncFunctionMediumTime()) continuano.
NextExpression(WinnerResult)
AsyncFunction4()
# Se le attività di sottoespressione urgente sono ancora in esecuzione al termine di AsyncFunction4
# ora vengono annullate.
Il codice seguente mostra la sintassi dell'espressione rush .
expression0
rush:
slow-expression
mid-expression
fast-expression
expression1
Il diagramma seguente mostra il flusso di esecuzione delle espressioni.
! [Visualizzazione dell'ordine in cui le espressioni terminano il blocco rush] (visualization-of-length-of-expressions-in-rush-block.png) (h:500)

Utilizzo dell'espressione rush
Possibilità di utilizzo di un'espressione rush |
Contesti asincroni |
Tempo di invocazione di un'espressione rush |
Async. |
Requisiti per il blocco di codice rush |
Il corpo dell'espressione rush deve contenere almeno due espressioni e tutte le espressioni devono essere async. |
Cosa fa l'espressione rush |
È simile a race, ma le espressioni che si completano dopo il primo completamento continuano. Se alcune espressioni vengono effettivamente completate durante lo stesso aggiornamento della simulazione, l'espressione che viene completata per prima interrompe la parità. Le espressioni incomplete continuano a essere valutate fino al loro completamento o fino al completamento del contesto asincrono che le racchiude, a questo punto, le espressioni perdenti rimanenti vengono annullate, a seconda di quale situazione si verifichi per prima. |
Quando l'espressione rush è completata |
L'espressione rush viene completata quando la prima espressione nel blocco di codice è stata completata. Questo potrebbe essere il più veloce, la lunghezza più breve, il primo completamento o la minor quantità di tempo per il completamento. |
Quando inizia l'espressione successiva al rush |
Qualsiasi espressione successiva a quella di rush inizia quando termina l'espressione è completata. |
Risultato dell'espressione rush |
Il risultato di un'espressione rush è il risultato della prima espressione completata. Il tipo di risultato è il tipo compatibile più comune di tutte le espressioni del blocco di codice. |
Attualmente non è possibile utilizzare un'espressione rush nel corpo di un'espressione di iterazione come loop o for. Se devi utilizzarla, includila in una funzione asincrona e fai in modo che l'espressione di iterazione chiami questa funzione.