Выражение spawn запускает один вызов асинхронной функции, и любое выражение, следующее за spawn, выполняется немедленно, в то время как задача запущенной асинхронной функции продолжает выполняться самостоятельно до тех пор, пока не завершится.
# Continues until completed without blocking
spawn{AsyncFunction1()} # Started at same time as expression0
expression0 # Started at same time as AsyncFunction1()В следующем коде показан синтаксис выражения spawn.
expression0
spawn{ expression1 }
expression2На блок-схеме ниже представлен ход выполнения потока выражений.
Несмотря на схожесть с выражением branch, в теле spawn разрешён только один вызов асинхронной функции. Также он допустим вне асинхронного контекста, поэтому вызов возможен как в неасинхронных, так и в асинхронных функциях.
Выражение spawn нужно использовать только как исключительное решение; в остальных случаях вместо него по возможности следует применять выражение branch, которое может заменить spawn во всех случаях.
Использование выражения spawn
Когда можно использовать выражение | Любой контекст. |
Время обращения к выражению | Немедленно. |
Требования к блоку кода | Тело выражения |
Что делает выражение | Тело |
Когда завершается выражение | Выражение |
Когда запускается следующее выражение после | Любое выражение, следующее за выражением |
Результат выражения | Результат |