다음 예제는 블로킹 방식의 코드입니다. 콘솔 결과를 미리 예측해보세요.
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('다음 작업');
결과는 다음과 같습니다.
콘솔
시작
다음 작업
작업 끝