rush 표현식을 사용해 블록 내 둘 이상의 비동기화 표현식을 동시에 실행할 수 있습니다.
가장 빠른 서브표현식이 완료되면 rush 다음에 오는 표현식이 평가되며, 남아 있는 모든 서브표현식이 계속해서 평가됩니다.
set WinnerResult = rush:
# 비동기화 함수 3개가 동시에 시작합니다
AsyncFunctionLongTime()
AsyncFunctionShortTime() # 이 함수가 승리하여 해당 결과가 사용됩니다
AsyncFunctionMediumTime()
# 가장 빠른 비동기화 함수(AsyncFunctionShortTime())가 완료되면 다음 표현식이 호출됩니다.
# 다른 모든 서브표현식 작업(AsyncFunctionLongTime(), AsyncFunctionMediumTime())이 계속됩니다.
NextExpression(WinnerResult)
AsyncFunction4()
# AsyncFunction4 완료 후에도 rush 서브표현식 작업이 계속 실행 중인 경우
# 이제 해당 작업이 취소됩니다.
다음 코드는 rush 표현식의 구문을 보여줍니다.
expression0
rush:
slow-expression
mid-expression
fast-expression
expression1
아래 다이어그램은 표현식의 실행 플로를 보여줍니다.

rush 표현식의 사용
rush 표현식을 사용할 수 있는 경우 |
비동기화 컨텍스트 |
rush 표현식의 인보크 시간 |
비동기 |
rush 코드 블록의 요건 |
rush 표현식의 바디는 적어도 둘 이상의 표현식을 가져야 하며, 모든 표현식이 비동기화 표현식이어야 합니다. |
rush 표현식의 역할 |
race 와 비슷하지만, 첫 번째 완료 후 완료되는 표현식이 계속 실행됩니다. 동일한 시뮬레이션 업데이트에서 표현식이 유효하게 완료되었다면, 앞에 만나 완료된 표현식이 동률을 처리합니다. 아직 완료되지 않은 표현식은 완료되거나 감싸는 비동기화 컨텍스트가 완료되는 것 중 어느 한 쪽이 먼저 발생할 때까지 평가를 계속하며, 이 시점에서 패배한 표현식은 취소됩니다. |
rush 표현식이 완료되는 시점 |
코드 블록 내 첫 번째 표현식이 완료되면 rush 표현식이 완료됩니다. 이는 가장 빠르거나, 길이가 가장 짧거나, 먼저 완료되거나, 완료되는 데 가장 적은 시간이 소요되는 표현식일 수 있습니다. |
rush 이후 다음 표현식이 시작되는 시점 |
rush 표현식 이후의 다음 표현식은 완료된 표현식이 끝나면 시작됩니다. |
rush 표현식의 결과 |
rush 표현식의 결과는 처음으로 완료된 표현식의 결과입니다. 결과 타입은 코드 블록의 모든 표현식 중에서 가장 일반적으로 호환되는 타입입니다. |
rush 표현식은 loop 또는 for 등 반복작업 표현식의 바디에서는 현재 사용될 수 없습니다. 반드시 사용해야 하는 경우 비동기화 함수로 감싸고 반복작업 표현식이 해당 함수를 호출하게 합니다.