반응형
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 29 | 30 | 31 |
Tags
- styled-components 설치 오류
- fetch()
- git branch -m
- 최단거리알고리즘
- Styled Components
- java
- js fetch
- use-immer
- Code Splitting
- 1966 프린터큐
- styled components 설치 안됨
- 네트워크 통신 요청
- 단일링크드리스트
- 브랜치 이름 변경 명령어
- styled-compoents
- styled-components 버전 문제
- Call Stack
- 테스크 큐
- react
- reading 'edgesOut'
- Javascript
- react immer
- reading 'useDebugValue'
- react-native-snap-carousel
- carouselButton
- React 공식문서
- javascript 비동기
- likelion
- vscode extension
- styled-components extension
Archives
- Today
- Total
Keep Going
JS가 비동기 프로그래밍이 가능하도록 하는 시스템 | Event Loop, Task Queue, Call Stack 본문
Study/Javascript
JS가 비동기 프로그래밍이 가능하도록 하는 시스템 | Event Loop, Task Queue, Call Stack
seon 2023. 11. 21.반응형
배경 지식
: JS 엔진은 1개의 실행 컨텍스트 스택을 갖는다. 따라서 한번에 하나의 task만 실행하는 single thread 방식으로 동작한다.
: 브라우저는 멀티 스레드로 동작한다.
event loop
- 브라우저 환경에서 자바스크립트 코드의 실행을 제어하는 메커니즘
- 브라우저는 여러 이벤트들을 감지하고, 이벤트 발생 시에 적절한 콜백 함수를 호출하거나 작업을 큐에 추가한다.
- task queue를 감시하고 있다.
task queue
- JS엔진이 처리해야 할 작업을 순서대로 담아두는 queue
- 주로 이벤트 핸들러, 타이머 콜백, 사용자 정의 비동기 작업이 들어간다.
- 매크로태스크 큐 / 마이크로태스크 큐로 나누어진다.
- 매크로태스크 큐(Macrotask Queue)
- call stack이 비어있을 때 이벤트 루프를 통해 call stack으로 이동되어 실행된다.
- setTimeOut, setInterval, I/O작업, rendering
- 마이크로태스크 큐(Microtask Queue)
- 매크로태스크 큐보다 높은 우선순위를 가진다.
- Promise 콜백 함수, async/await
- 현재 실행 중인 매크로 태스크가 완료된 직후 처리되며, 이 처리는 이벤트 루프의 한 사이클 동안 발생한다.
- 매크로태스크 큐(Macrotask Queue)
call stack
- 현재 실행 중인 함수들의 호출 정보를 담고 있는 스택
- 동기적인 코드 실행이 이루어진다.
- 함수 호출 되면 → call stack에 추가되고, 함수가 종료 되면 → call stack에서 제거된다.
반응형
'Study > Javascript' 카테고리의 다른 글
fetch API (0) | 2023.05.10 |
---|---|
[javascript] 주기적인 실행 setInterval, setTimeout (0) | 2019.08.27 |