>웹 프론트엔드 >JS 튜토리얼 >JavaScript 이벤트 루프 이해(간단함)

JavaScript 이벤트 루프 이해(간단함)

Susan Sarandon
Susan Sarandon원래의
2024-12-24 11:04:11651검색

Understanding the JavaScript Event Loop (Made Simple)

JavaScript 이벤트 루프 이해(간단함)

JavaScript 이벤트 루프는 JavaScript에서 비동기 프로그래밍을 가능하게 해줍니다. 간단한 설명은 이렇습니다!


? 주요 개념

1. 단일 스레드

JavaScript는 단일 스레드이기 때문에 한 번에 한 가지 작업만 수행할 수 있습니다.

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

? 출력:

Task 1
Task 2

2. 동기식 vs. 비동기식

  • 동기 작업: 순서대로 실행됩니다.
  • 비동기 작업: 메인 스레드를 차단하지 마세요. 그들은 달릴 준비가 될 때까지 기다립니다.
console.log("Start");

setTimeout(() => {
  console.log("Async Task");
}, 1000);

console.log("End");

? 출력:

Start
End
Async Task

? 이벤트 루프의 작동 방식

  1. 콜스택

    • 과제를 하나씩 수행하는 곳.
    • 함수가 실행되면 스택에 추가됩니다. 완료되면 제거됩니다.
  2. 웹 API

    • 비동기 작업(예: setTimeout)이 여기에서 처리됩니다. 그들은 뒤에서 기다리고 있습니다.
  3. 콜백 대기열

    • 비동기 작업이 완료되면 해당 콜백이 대기열에 추가됩니다.
  4. 이벤트 루프

    • 이벤트 루프는 다음을 확인합니다.
      1. 호출 스택이 비어 있나요?
      2. YES인 경우 콜백 대기열에서 작업을 가져와 스택에 푸시합니다.

✨ 예: 단계별

console.log("Start");

setTimeout(() => {
  console.log("Timeout Task");
}, 2000);

console.log("End");

1️⃣ 콜스택

Step Call Stack Notes
1 console.log Logs "Start"
2 setTimeout Registers timeout task
3 console.log Logs "End"

2️⃣ 웹 API

  • setTimeout은 Web API로 이동하여 타이머를 시작합니다.

3️⃣ 콜백 대기열

  • 2000ms 후에 콜백(() => console.log("Timeout Task"))가 대기열로 이동합니다.

4️⃣ 이벤트 루프

  • 이벤트 루프는 호출 스택이 비어 있는지 확인합니다.
  • 콜백이 스택으로 이동되어 실행됩니다.

? 최종 출력:

Start
End
Timeout Task

? 이벤트 루프 시각화

이벤트 루프를 제대로 이해하려면 다음 리소스를 확인하세요.

  • 루페
  • MDN: 동시성 모델

즐거운 코딩하세요! ?

위 내용은 JavaScript 이벤트 루프 이해(간단함)의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.