일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
- 강아지 더위
- 반려견 종류
- 쿠팡매크로
- 반려견
- 반려견 유기농
- 부산 맛집
- 강아지 홀리스틱
- 국비지원 예습
- 샤로수길 맛집
- 동인천 맛집
- 반려견 유기농 사료
- 강아지 유기농
- 반려견 더위
- 반려견 열사병
- 홀리스틱 유기농
- 티켓팅메크로
- 반려견 홀리스틱
- 강아지 유기농 사료
- 강아지 열사병
- 강아지 종류
- 강아지종류
- 반려견 사료등급
- 서울대입구 맛집
- 쿠팡메크로
- 티켓팅매크로
- 자동화봇
- 샤로수길 데이트
- 닥스훈트
- 강아지
- 신포동 맛집
- Today
- Total
심심한잉여의 잡동사니
[JavaScript]이벤트 루프란? 본문
JavaScript는 싱글 쓰레드 기반 언어이다.
하지만 JavaScript가 사용되는 환경을 생각해보면 많은 작업이 동시에 처리되고 있는 것을 알 수 있다.
예를 들면, Node.js기반의 웹 서버에서는 동시에 여러개의 http요청을 처리하는 것을 볼 수 있다.
위 그림은 이벤트 루프를 설명할 때 자주 쓰이는 그림이다.
JavaScript는 이벤트 루프를 이용해서 비동기 방식으로, 동시성을 지원한다.
이벤트 루프에서는 이벤트가 발생 시 호출되는 콜백 함수들을 태스크 큐에 전달하고
태스크 큐에 담겨있는 콜백 함수들을 콜스택에 넘겨준다.
이벤트 루프가 태스크 큐에서 콜스택으로 콜백 함수를 넘겨주는 작업은 콜스택에 쌓여있는 함수가 없을 때만 수행된다.
태스크 큐에서는 web api에서 비동기 작업들이 실행된 후 호출되는 콜백함수들이 대기하는 공간이며 이벤트 루프가 정해준 순서로 들어가 있다.(FIFO 방식)
Web API는 브라우저에서 자체 지원하는 api이다.
Web API는 DOM이벤트, AJAX, setTimeout 등의 비동기 작업 등을 수행할 수 있도록 api를 지원하는 것이다.
런타임 환경에서 JavaScript 코드가 실행 될 때 Web API가 지원하는 비동기 작업을 수행하는 코드는
코드가 호출 스택에 쌓인 후 실행되며 JavaScript 엔진은 비동기 작업을 Web API에 위임한다.
Web API는 해당 비동기 작업을 수행하고, 콜백 함수를 이벤트 루프를 통해서 태스크 큐에 넘겨주게 된다.
이벤트 루프는 콜스택이 비어있는지 확인하고 비어있을 때 태스크 큐에서 대기하고 있던 콜백 함수를 콜스택으로 넘겨준다.
콜스택에 쌓인 콜백함수가 실행되고 콜스택에서 제거된다.
'코딩일기 > 자바스크립트' 카테고리의 다른 글
[JavaScript/자바스크립트] 특수문자 체크 정규식 (1) | 2022.08.18 |
---|---|
[JavaScript]숫자 정규식 (0) | 2022.08.17 |
[JavaScript]자바스크립트, JS 숫자인지 체크, isNaN() 함수 (0) | 2022.04.22 |
[JavaScript] .includes 뜻 (0) | 2022.04.20 |
[JavaScript] 프로미스 (Promise) (0) | 2022.04.14 |