spawn
式 は 1 つの async 関数呼び出し を開始し、spawn
に続く式は、開始された async 関数のタスクが完了するまで独立して続く間にすぐに 実行されます。
# 完了するまでブロックすることなく継続します
spawn{AsyncFunction1()} # expression0 と同時に開始しました
expression0 # AsyncFunction1() と同時に開始しました
次のコードは、spawn
式の 構文 を示しています。
expression0
spawn{ expression1 }
expression2
以下の図は、この式の実行フローを示しています。

branch
に似てはいますが、spawn
の本体は 1 つの async 関数呼び出しに制限されます。また、async コンテキスト の外側で許容されるため、async 以外の関数と async 関数両方の中で呼び出すことができます。
spawn
式は非常口のように扱う必要があります。また、可能な限り spawn
の代わりに branch
を使用する必要があります。
spawn 式の使用法
spawn 式を使用できる場所 |
すべてのコンテキスト |
spawn 式の呼び出し時間 |
即時 |
spawn コード ブロックの要件 |
spawn 式の本体は、検出されるとすぐに開始されます。少なくとも 1 つの async 式が必要です。 |
spawn 式の機能 |
spawn の本体は、async 関数の本体のような async コンテキストを作成しますが、spawn 本体内で実行できる async 関数呼び出しは 1 つのみです。spawn の async 関数は、検出されるとすぐに開始され、一時停止中 かブロック中のものを検出するまで可能な限り評価を行います。スポーンされた async 関数は、スポーンされた場所にそれ以上接続することなく、完了するまで評価を続けます。 |
spawn 式が完了するタイミング |
spawn 式はすぐに完了します。 |
spawn の開始後に次の式が開始されるタイミング |
spawn 式に続く次の式はすべて、すぐに開始されます。 |
spawn 式の結果 |
spawn 式には タスク の結果があります。 |