wyrażenie rush służy do uruchomienia bloku dwóch lub więcej wyrażeń asynchronicznych współbieżnie (jednocześnie).
Po zakończeniu najszybszego podwyrażenia oceniane jest każde wyrażenie następujące po rush, a wszystkie pozostałe podwyrażenia kontynuują ocenę.
set WinnerResult = rush:
# Wszystkie trzy funkcje asynchroniczne uruchamiają się w tym samym czasie
AsyncFunctionLongTime()
AsyncFunctionShortTime() # To wygra, a wynik tego zostanie wykorzystany
AsyncFunctionMediumTime()
# Następne wyrażenie jest wywoływane po zakończeniu najszybszej funkcji asynchronicznej (AsyncFunctionShortTime()).
# Wszystkie inne zadania podwyrażenia (AsyncFunctionLongTime(), AsyncFunctionMediumTime()) są kontynuowane.
NextExpression(WinnerResult)
AsyncFunction4()
# Jeśli jakiekolwiek zadania podwyrażenia rush są nadal uruchomione po zakończeniu AsyncFunction4
# w tym przypadku są one teraz anulowane.
Poniższy kod przedstawia składnię dla wyrażenia rush.
wyrażenie0
rush:
slow-expression
mid-expression
fast-expression
wyrażenie1
Poniższy schemat przedstawia przepływ wykonywania dla wyrażeń.

Użycie wyrażenia Rush
Miejsce użycia wyrażenia rush |
Konteksty asynchroniczne |
Czas wywołania wyrażenia rush |
Asynchroniczne |
Wymagania dotyczące bloku kodu rush |
Korpus wyrażenia rush musi zawierać co najmniej dwa wyrażenia i wszystkie wyrażenia muszą być asynchroniczne. |
Co wykonuje wyrażenie rush |
Działa to podobnie do race, ale wyrażenia, które kończą się po pierwszym zakończeniu, są kontynuowane. Jeśli jakiekolwiek wyrażenia zostaną skutecznie ukończone w ramach jednej aktualizacji symulacji, wówczas powiązanie przerywa ukończone wyrażenie występujące wcześniej. Nieukończone wyrażenia są poddawane ocenie do czasu ich ukończenia lub do czasu ukończenia ograniczającego kontekstu asynchronicznego – zależnie, co nastąpi wcześniej, po czym wszelkie pozostałe wyrażenia przegrywające zostają anulowane. |
Kiedy wyrażenie rush zakończy się |
Wyrażenie rush kończy się, gdy zakończy się pierwsze wyrażenie w bloku kodu. Może to być najszybsze, najkrótsza długość, pierwsze ukończenie lub najkrótszy czas do ukończenia. |
Czas rozpoczęcia wyrażenia następującego po wyrażeniu rush |
Każde kolejne wyrażenie następujące po wyrażeniu rush zostaje rozpoczęte, kiedy zakończy się zakończone wyrażenie. |
Wynik wyrażenia rush |
Wynikiem wyrażenia rush jest wynik pierwszego ukończonego wyrażenia. Typ wyniku jest najczęściej typem zgodnym ze wszystkimi wyrażeniami w bloku kodu. |
Obecnie nie można używać wyrażenia rush w korpusie wyrażenia iteracyjnego, takiego jak loop czy for. Jeśli konieczne jest jego użycie, należy otoczyć je funkcją asynchroniczną, a następnie ustawić wywołanie tej funkcji z wyrażenia iteracyjnego.