La expresión spawn comienza con una llamada a función asíncrona y cualquier expresión que siga a spawn se ejecutará inmediatamente mientras que la tarea de función asíncrona iniciada continúa independientemente hasta que se completa.
# Continúa hasta que se completa sin bloqueo.
spawn{AsyncFunction1()} # Iniciada en el mismo momento que expression0.
expression0 # Iniciada en el mismo momento que AsyncFunction1().
El siguiente código muestra la sintaxis de la expresión spawn.
expression0
spawn{ expression1 }
expression2
El siguiente diagrama muestra el flujo de ejecución de las expresiones.
A pesar de que es similar a branch, el cuerpo de spawn se limita a una única llamada a función asíncrona. También se permite fuera de un contexto asíncrono, por lo que puede llamarse dentro de funciones asíncronas y funciones no asíncronas.
Una expresión spawn debería tratarse como una salida de emergencia mientras que branch (derivación) debe usarse en lugar de spawn siempre que sea posible.
Uso de la expresión de generación (spawn)
Dónde puede usarse una expresión spawn |
En cualquier contexto. |
Tiempo de invocación de la expresión spawn |
Inmediato. |
Requisitos del bloque de código spawn |
El cuerpo de la expresión spawn se inicia tan pronto como se encuentra. Debe tener por lo menos una expresión asíncrona. |
Qué hace la expresión spawn |
El cuerpo de spawn crea un contexto asíncrono como el cuerpo de una función asíncrona. Sin embargo, solo se permite una única llamada a función asíncrona dentro del cuerpo de spawn. La función asíncrona de spawn comienza tan pronto como se la encuentra y evalúa tanto como sea posible hasta que encuentra algo que la suspende o bloquea. La función asíncrona generada continúa evaluando hasta que se completa sin ninguna otra conexión con el lugar donde se generó. |
Cuándo se completa la expresión spawn |
La expresión spawn se completa inmediatamente. |
Cuándo comienza la siguiente expresión después de spawn |
Cualquier expresión que siga a la expresión spawn comenzará inmediatamente. |
Resultado de la expresión spawn |
Una expresión spawn tiene un resultado de tarea. |