Wyrażenie spawn rozpoczyna jedno wywołanie funkcji asynchronicznej, a każde wyrażenie następujące po wyrażeniu spawn jest wykonywane natychmiast w trakcie wykonywania uruchomionego zadania funkcji asynchronicznej w sposób niezależny, aż do jego ukończenia.
# Continues until completed without blocking
spawn{AsyncFunction1()} # Started at same time as expression0
expression0 # Started at same time as AsyncFunction1()Poniższy kod przedstawia składnię dla wyrażenia spawn.
expression0
spawn{ expression1 }
expression2Poniższy schemat przedstawia przepływ, zgodnie z którym wykonywane są wyrażenia.
Choć samo wyrażenie jest zbliżone do wyrażenia branch, ciało wyrażenia spawn jest ograniczone do wywołania pojedynczej funkcji asynchronicznej. Jest ono również dopuszczalne poza kontekstem asynchronicznym, dzięki czemu może być wywoływane z poziomu funkcji zarówno nieasynchronicznych, jak i asynchronicznych.
Wyrażenie spawn należy traktować jako środek awaryjny i w miarę możliwości zamiast wyrażenia spawn należy stosować wyrażenie branch.
Użycie wyrażenia spawn
Gdzie można użyć wyrażenia | Dowolny kontekst. |
Czas wywoływania wyrażenia | Natychmiast. |
Wymagania dotyczące bloku kodu | Ciało wyrażenia |
Co wykonuje wyrażenie | Ciało wyrażenia |
Czas ukończenia wyrażenia | Wyrażenie |
Kiedy rozpoczyna się kolejne wyrażenie po wyrażeniu | Każde wyrażenie następujące po wyrażeniu |
Wynik wyrażenia | Wyrażenie |