JS 동기, 비동기

HARIBO·2021년 10월 15일
0

동기, 비동기

  • 자바스크립트는 하나의 콜 스택을 갖기 때문에 싱글 스레드 방식으로 동작한다. 따라서 동작이 오래 걸리는 코드를 실행하면 블로킹(blocking)이 발생한다.
  • 현재 태스크가 종료할 때까지 다음 태스크가 대기하는 방식을 '동기처리'라고 한다.
  • 현재 태스크가 종료되지 않았음에도 다음 태스크를 실행하는 방식을 '비동기처리'하고 한다.(non-blocking)
function delay(){
  console.log("delayed task");
}

function task(){
  console.log("task");
}

//콜 스택에서 setTimeout함수가 제거되고, 타이머가 종료된 후 콜백함수가 태스크 큐에 푸시되어 대기
//동시에 콜 스택에는 task함수가 들어가 실행된다.
//이벤트 루프가 콜 스택이 비어있음을 감지하면 대기 중인 delay함수를 콜 스택에 push한다.
setTimeout(delay, 2000);
task();

//task
//delayed task

0개의 댓글