다음 예제는 블로킹 방식의 코드입니다. 콘솔 결과를 미리 예측해보세요.

    function longRunningTask() {
      // 오래 걸리는 작업
      console.log('작업 끝');
    }
    
    console.log('시작');
    longRunningTask();
    console.log('다음 작업');

    결과는 다음과 같습니다.

    콘솔

    시작
    작업 끝
    다음 작업

    작업을 수행하는 데 오래 걸리는 longRunningTask 함수가 있고, 이 함수가 블로킹 방식의 I/O 작업을 한다고 생각해봅시다. 이 작업이 완료되기 전까지는 이어지는 console.log('다음 작업')이 호출되지 않습니다.

    이번에는 setTimeout을 사용해서 코드를 바꿔보겠습니다.

    function longRunningTask() {
      // 오래 걸리는 작업
      console.log('작업 끝');
    }
    console.log('시작');
    setTimeout(longRunningTask, 0);
    console.log('다음 작업');

    결과는 다음과 같습니다.

    콘솔

    시작
    다음 작업
    작업 끝
    신간 소식 구독하기
    뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.