L'expression spawn lance un appel de fonction asynchrone, et toute expression qui suit l'expression spawn est exécutée immédiatement, tandis que la tâche de fonction asynchrone lancée se poursuit indépendamment jusqu'à ce qu'elle se termine.
# Continue jusqu'à la fin sans blocage
spawn{AsyncFunction1()} # Lancée au même moment qu'expression0
expression0 # Lancée au même moment qu'AsyncFunction1()
Le code suivant montre la syntaxe de l'expression spawn.
expression0
spawn{ expression1 }
expression2
Le diagramme ci-dessous montre le flux d'exécution des expressions.
Bien que semblable à l'expression branch, le corps de l'expression spawn est limité à un seul appel de fonction asynchrone. Cette expression est également autorisée en dehors d'un contexte asynchrone ; il est donc possible de l'appeler à la fois dans des fonctions non asynchrones et asynchrones.
Une expression spawn doit être traitée comme une solution d'urgence ; dans la mesure du possible, utilisez une expression branch plutôt qu'une expression spawn.
Utilisation de l'expression spawn
Possibilité d'utilisation d'une expression spawn |
Tout contexte. |
Temps d'invocation de l'expression spawn |
Immédiat. |
Conditions requises pour le bloc de code de l'expression spawn |
Le corps de l'expression spawn est lancé dès qu'il est détecté. Il doit disposer d'au moins une expression asynchrone. |
Ce que fait l'expression spawn |
Le corps d'une expression spawn crée un contexte asynchrone comme le corps d'une fonction asynchrone. Cependant, un seul appel de fonction asynchrone est autorisé dans le corps de l'expression spawn. La fonction asynchrone de l'expression spawn est lancée dès qu'elle est détectée et est évaluée autant que possible jusqu'à ce qu'elle rencontre un objet suspendu ou bloqué. La fonction asynchrone générée continue d'être évaluée jusqu'à ce qu'elle soit terminée, sans autre connexion à l'emplacement où elle a été générée. |
Moment où l'expression spawn se termine |
L'expression spawn se termine immédiatement. |
Moment où la prochaine expression après spawn est lancée |
Toute expression suivant l'expression spawn démarre immédiatement. |
Résultat de l'expression spawn |
Le résultat d'une expression spawn est une tâche. |