spawn 표현식은 비동기화 함수 호출을 시작하며, 시작된 비동기화 함수의 작업이 완료될 때까지 독립적으로 계속되는 동안 spawn 뒤에 오는 모든 표현식은 즉시 실행됩니다.
# 완료될 때까지 중단 없이 계속됩니다
spawn{AsyncFunction1()} # expression0과 동시에 시작
expression0 # AsyncFunction1()과 동시에 시작
다음 코드는 spawn 표현식의 구문입니다.
expression0
spawn{ expression1 }
expression2
다음 그림에 표현식의 실행 흐름이 나타나 있습니다.
branch와 비슷하지만 spawn 의 바디는 하나의 비동기화 함수 호출로 제한됩니다. 또한 비동기화 컨텍스트 밖에서도 사용할 수 있으므로 비동기화 함수 및 비동기화가 아닌 함수 모두에서 호출할 수 있습니다.
spawn 표현식은 비상탈출구처럼 생각하고, 가능하면 spawn 대신 branch 를 사용해야 합니다.
Spawn 표현식 사용
spawn 표현식을 사용할 수 있는 경우 |
모든 컨텍스트 |
spawn 표현식의 호출 시간 |
즉시 |
spawn 코드 블록의 조건 |
spawn 표현식의 바디는 만난 순간 시작됩니다. 적어도 한 개의 비동기화 표현식을 가져야 합니다. |
spawn 표현식이 하는 일 |
spawn 의 바디는 비동기화 함수의 바디처럼 비동기화 컨텍스트를 생성합니다. 하지만 spawn 바디 내에서는 단일 비동기화 함수 호출만 허용됩니다. spawn 의 비동기화 함수는 만나면 바로 실행되며, 정지되거나 중단되기 전까지 최대한 평가합니다. spawn된 비동기화 함수는 생성된 위치에 대한 추가 연결 없이 완료될 때까지 계속 평가합니다. |
spawn 표현식이 완료되는 시점 |
spawn 표현식은 즉시 완료됩니다. |
spawn 이후 다음 표현식이 시작되는 시점 |
spawn 표현식 이후의 다음 표현식은 즉시 시작됩니다. |
spawn 표현식의 결과 |
spawn 은 작업 결과를 가집니다. |