>  Q&A  >  본문

이 네 가지 setTimeout 함수와 해당 실행 부분을 살펴보십시오.

으아아아

여기서 제가 이해한 바에 따르면 4개의 setTimeout 함수가 콜백 대기열에서 동시에 실행되기 시작합니다. 내 생각이 맞다면 내 질문은 네 번째 setTimeout() 함수가 콜백 대기열에서 실행의 절반 또는 절반 이상을 완료했는지 아니면 호출 스택 구현에 푸시된 후 7초 후에 처음부터 시작하는지 여부입니다. 그렇다면 뒤에서 무슨 일이 벌어지고 있는 걸까요?

P粉304704653P粉304704653398일 전557

모든 응답(1)나는 대답할 것이다

  • P粉709307865

    P粉7093078652023-09-18 13:33:27

    이러한 함수는 콜백 대기열에서 병렬로 또는 동시에 실행되지 않습니다. 개별적으로 비동기식으로 예약됩니다. 실행 순서는 각 기능의 지정된 대기 시간에 따라 다릅니다. 각 setTimeout 함수에 대해 콜백은 지정된 지연 후에 실행되도록 예약됩니다.

    실행 순서는 다음과 같습니다.

    으아아아

    단, 네 번째 setTimeout 함수는 반드시 다른 setTimeout 함수와 함께 실행되는 것은 아니며, 단독으로 실행된다는 보장도 없습니다. 실행 순서는 콜백 대기열에 의해 결정되며, 이벤트 루프는 콜백 대기열에서 작업을 가져와서 호출 스택이 비어 있는 경우에만 호출 스택에서 실행합니다. 따라서 네 번째 setTimeout 함수는 호출 스택에 다른 작업이 없을 때만 실행을 시작합니다. 주어진 코드를 실행한 후 출력은 다음 순서로 나타나야 합니다.

    다음은 출력 순서입니다.

    으아아아

    회신하다
    0
  • 취소회신하다