동기식 및 비동기식 JavaScript 배우기

발행: (2026년 3월 28일 AM 02:57 GMT+9)
3 분 소요
원문: Dev.to

Source: Dev.to

동기식

동기식 프로그래밍에서는 작업이 순차적으로 하나씩 실행됩니다. 각 코드 라인은 이전 라인이 끝날 때까지 기다린 뒤 다음 라인으로 넘어가므로 흐름이 명확하고 예측 가능합니다.

console.log("Start");
console.log("Task 1");
console.log("Task 2");
console.log("End");

Output

Start
Task 1
Task 2
End

각 문장은 앞선 문장이 완료된 후에만 실행되므로 코드가 고정된 단계‑별 순서대로 수행됩니다.

비동기식

비동기식 프로그래밍에서는 이전 작업이 끝날 때까지 기다리지 않고 작업이 독립적으로 실행될 수 있습니다. 한 작업이 진행되는 동안 다른 코드도 계속 실행되므로 성능과 응답성이 향상됩니다.

console.log("Start");

setTimeout(function() {
  console.log("Task 1");
}, 2000);

console.log("End");

Output

Start
End
Task 1

setTimeout은 비동기적으로 동작하므로 인터프리터가 타이머가 끝날 때까지 기다리지 않고 다음 라인으로 넘어갑니다.

비동기 JavaScript 작동 방식

호출 스택

호출 스택은 JavaScript가 함수를 실행하는 장소이며, LIFO(후입선출) 방식으로 코드를 처리합니다.

웹 API (브라우저)

브라우저가 제공하는 웹 API는 setTimeout, 네트워크 요청, 이벤트 리스너와 같은 작업을 담당합니다. 이러한 API를 호출하면 요청이 브라우저에 전달되어 JavaScript 엔진은 다른 코드를 계속 실행할 수 있습니다.

콜백 큐

웹 API가 작업을 마치면(예: 타이머가 만료되면) 해당 콜백 함수를 콜백 큐에 넣습니다.

이벤트 루프

이벤트 루프는 호출 스택을 지속적으로 확인합니다. 스택이 비어 있으면 콜백 큐에 있는 함수를 호출 스택으로 옮겨 실행합니다. 이 메커니즘을 통해 지연되거나 비동기적인 작업은 메인 동기 코드가 모두 끝난 뒤에 실행됩니다.

0 조회
Back to Blog

관련 글

더 보기 »

점심 선택기

!Lunch Picker 커버 이미지 https://media2.dev.to/dynamic/image/width=1000,height=420,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazon...