Der spawn-Ausdruck startet einen asynchronen Funktionsaufruf, und jeder Ausdruck, der auf den spawn folgt, wird sofort ausgeführt, während die gestartete asynchrone Funktionsaufgabe unabhängig fortgesetzt wird, bis sie abgeschlossen ist.
# Wird fortgesetzt, bis sie abgeschlossen ist, ohne blockiert zu werden
spawn{AsyncFunction1()} # Wird zur gleichen Zeit wie expression0 gestartet
expression0 # Wird gleichzeitig mit AsyncFunction1() gestartet
Der folgende Code zeigt die Syntax für den spawn-Ausdruck.
expression0
spawn{ expression1 }
expression2
Das folgende Diagramm zeigt den Ausführungsablauf der Ausdrücke.
Obwohl dies ähnlich wie branch ist, ist der spawn-Textkörper auf einen einzigen asynchronen Funktionsaufruf beschränkt. Er ist auch außerhalb eines asynchronen Kontexts erlaubt, sodass er sowohl in nicht-asynchronen als auch in asynchronen Funktionen aufgerufen werden kann.
Ein spawn-Ausdruck sollte wie eine Notausstiegsluke behandelt werden, während branch wann immer möglich anstelle von spawn verwendet werden sollte.
Verwendung von ## Spawn-Ausdrücken
Wo du einen spawn-Ausdruck verwenden kannst |
Jeder Kontext. |
Aufrufzeit des spawn-Ausdrucks |
Sofort. |
Voraussetzungen für den spawn-Codeblock |
Der Textkörper des spawn-Ausdrucks wird gestartet, sobald er erreicht wird. Er muss mindestens einen asynchronen Ausdruck haben. |
Was der spawn-Ausdruck macht |
Der Textkörper eines spawn erstellt einen asynchronen Kontext wie der Textkörper einer asynchronen Funktion. Allerdings ist nur ein einziger asynchroner Funktionsaufruf innerhalb des spawn-Körpers erlaubt. Die asynchrone Funktion des spawn wird gestartet, sobald sie erreicht wird, und wertet so viel wie möglich aus, bis sie auf eine Aussetzung oder eine Blockierung stößt. Die gespawnte asynchrone Funktion wertet so lange weiter aus, bis sie ohne weitere Verbindung zu dem Ort abschließt, an dem sie gespawnt wurde. |
Wann der spawn-Ausdruck abgeschlossen ist |
Der spawn-Ausdruck wird sofort abgeschlossen. |
Wann der nächste Ausdruck nach spawn startet |
Jeder nächste Ausdruck, der auf den Ausdruck spawn folgt, wird sofort gestartet. |
Ergebnis des spawn-Ausdrucks |
Ein spawn hat ein Aufgaben-Ergebnis. |