L'expression rush est utilisée pour exécuter un bloc de deux ou plusieurs expressions asynchrones simultanément.
Lorsque la sous-expression la plus rapide termine, toute expression qui suit l'expression rush est évaluée et toutes les sous-expressions restantes continuent à être évaluées.
set WinnerResult = rush:
# Les trois fonctions asynchrones commencent en même temps
AsyncFunctionLongTime()
AsyncFunctionShortTime() # Cette expression « gagne » et son résultat est utilisé
AsyncFunctionMediumTime()
# L'expression suivante est appelée après la fin de la fonction asynchrone (AsyncFunctionShortTime()) la plus rapide.
# Toutes les autres tâches de sous-expression (AsyncFunctionLongTime(), AsyncFunctionMediumTime()) se poursuivent.
NextExpression(WinnerResult)
AsyncFunction4()
# Si des tâches de sous-expression rush sont toujours en cours d'exécution lorsque AsyncFunction4 se termine,
# elles sont annulées.
Le code suivant montre la syntaxe de l’expression rush.
expression0
rush:
slow-expression
mid-expression
fast-expression
expression1
Le diagramme ci-dessous montre le flux d'exécution des expressions.

Utiliser l'expression rush
Où utiliser une expression rush |
Contextes asynchrones |
Durée d'appel de l’expression rush |
Asynchrone |
Exigences concernant le code de bloc de l'expression rush |
Le corps de l'expression rush doit disposer d'au moins deux expressions, et toutes les expressions doivent être asynchrones. |
Ce que fait l'expression rush |
Similaire à l'expression race, mais les expressions qui se terminent après le premier achèvement se poursuivent. Si plusieurs expressions se terminent effectivement lors de la mise à jour de la simulation, l'expression qui s'achève en premier l'emporte et brise toute égalité. Toutes les expressions incomplètes continuent d'être évaluées jusqu'à ce qu'elles s'achèvent ou jusqu'à que le contexte asynchrone qui les entoure se termine, après quoi toute expression perdante restante est annulée (selon ce qui se produit en premier). |
Lorsque l'expression rush se termine |
L'expression rush s'achève une fois terminée la première expression du bloc de code. Il peut s'agir de l'expression la plus rapide, de l'expression la plus courte, de celle qui s'est terminée en premier ou de celle qui a pris le moins de temps à s'achever. |
Lors du démarrage de l'expression qui suit rush |
Toute expression suivant l’expression rush démarre au terme de l'expression qui vient de s'achever. |
Résultat de l'expression rush |
Le résultat d'une expression rush est le résultat de la première expression qui s'est achevée. Le type de résultat est le type compatible le plus commun de toutes les expressions dans le bloc de code. |
Il est actuellement impossible d'utiliser une expression rush dans le corps d'une expression d'itération telle que loop ou for. Si vous devez l'utiliser, intégrez-la dans une fonction asynchrone et faites en sorte que l'expression d'itération appelle cette fonction.