Der 'rush' Ausdruck wird verwendet, um einen Block von zwei oder mehr asynchronen-Ausdrücken gleichzeitig (simultan) auszuführen.
Wenn der schnellste Unterausdruck abgeschlossen ist, wird jeder Ausdruck, der dem rush folgt, ausgewertet, und alle verbleibenden Unterausdrücke werden weiterhin [ausgewertet] (verse-glossary#auswerten).
set WinnerResult = rush:
# Alle drei asynchronen Funktionen starten zur gleichen Zeit
AsyncFunctionLongTime()
AsyncFunctionShortTime() # Dieser wird gewinnen und sein Ergebnis wird verwendet
AsyncFunctionMediumTime()
# Der nächste Ausdruck wird aufgerufen, nachdem die schnellste asynchrone Funktion (AsyncFunctionShortTime()) abgeschlossen ist.
# Alle anderen Unterausdruck-Aufgaben (AsyncFunctionLongTime(), AsyncFunctionMediumTime()) werden fortgesetzt.
NextExpression(WinnerResult)
AsyncFunction4()
# Wenn nach Abschluss von AsyncFunction4 noch „rush“-Unterausdrucks-Aufgaben ausgeführt werden
# dann werden sie jetzt abgebrochen.
Der folgende Code zeigt die Syntax für den „rush“-Ausdruck.
expression0
rush:
slow-expression
mid-expression
fast-expression
expression1
Das folgende Diagramm zeigt den Ausführungs-Ablauf für die Ausdrücke.

Rush-Ausdruck verwenden
| Wo du einen „rush“-Ausdruck verwenden kannst | Asynchrone Kontexte |
| Aufrufzeit des „rush“-Ausdrucks | Asynchron |
Voraussetzungen für den rush-Codeblock |
Der Hauptteil des rush-Ausdrucks muss mindestens zwei Ausdrücke enthalten, und alle Ausdrücke müssen asynchron sein. |
Was der rush-Ausdruck bewirkt |
Er ähnelt race, aber Ausdrücke, die nach dem ersten Abschluss abgeschlossen sind, werden fortgesetzt. Wenn irgendwelche Ausdrücke bei derselben Simulationsaktualisierung wirkungsvoll abgeschlossen werden, hebt der früher gefundene Ausdruck, der abgeschlossen wurde, einen Gleichstand auf. Alle unvollständigen Ausdrücke werden weiterhin ausgewertet, bis sie abgeschlossen sind oder bis der umfassende asynchrone Kontext abgeschlossen ist. An diesem Punkt werden alle verbleibenden verlierenden Ausdrücke abgebrochen – was auch immer zuerst eintritt. |
Wann der rush-Ausdruck abgeschlossen ist |
Der rush-Ausdruck ist abgeschlossen, wenn der erste Ausdruck im Codeblock abgeschlossen ist. Dies kann der schnellste Ausdruck sein, der kürzeste, der zuerst abgeschlossene oder der mit der kürzeste Zeitdauer bis zum Abschluss. |
Wann der nächste Ausdruck nach rush beginnt |
Jeder nächste Ausdruck, der dem rush-Ausdruck folgt, wird gestartet, wenn der abgeschlossene Ausdruck endet. |
Ergebnis des rush-Ausdrucks |
Das Ergebnis eines rush-Ausdrucks ist das Ergebnis des ersten abgeschlossenen Ausdrucks. Der Ergebnistyp ist der am häufigsten vorkommende kompatible Typ aller Ausdrücke im Codeblock. |
Ein rush-Ausdruck kann derzeit nicht wie loop oder `for im Body eines Iterationsausdrucks verwendet werden. Wenn er verwendet werden muss, verpacke ihn in eine asynchrone Funktion und lass den Iterationsausdruck diese Funktion aufrufen.