프론트엔드 정복하기
모던 Javascript 튜토리얼 - 파트2 본문
6.3 이벤트 루프와 매크로, 마이크로 태스크
자바스크립트 엔진을 활성화하는(=이벤트 루프가 활성화되는) 태스크 - script 가 로드될 때 - mouse 이벤트 등의 이벤트 핸들러 실행될때 - setTimeout 에서 콜백함수가 실행될때 기타 등등.. 알아둘만한 지식! - 엔진이 특정 태스크 처리하는 동안 --> 렌더링이 일어나지 않는다! (DOM 변경 x) - 마이크로태스크는 다른 이벤트 핸들러, 렌더링 작업, 매크로태스크가 실행되기 전에 처리된다. - 마이크로태스크 전체가 처리되는 동안에는 UI 변화나 네트워크 이벤트 핸들링이 일어나지 않습니다. 렌더링이나 네트워크 요청 등의 작업들은 마이크로태스크 전부가 처리되고 난 직후 처리됩니다. 이에 따른 활용방안 - CPU 소모가 많은 태스크는 쪼갠다. - 일부 태스크를 먼저 하도록 하고, 나머지 태스크는 지연시간이 0인 setTimeout으로 새롭게 스케줄링한다. - 그렇다면, 중간에 onclick 이벤트같은 새로운 태스크가 두번째 스케줄링된 태스크 이전에 실행된다. - 마이크로태스크: .then/catch/finally, await, queueMicrotask(function) - 매크로태스크: script, mouse event, setTimeout, .. - 자바스크립트 엔진은 매크로태스크 하나를 처리할 때마다 또 다른 매크로태스크나 렌더링 작업을 하기 전에, 마이크로태스크 큐에 쌓인 마이크로태스크 전부를 처리한다. |
'JavaScript' 카테고리의 다른 글
자바스크립트의 여러가지 엔진들 (1) | 2023.11.18 |
---|---|
모던 Javascript 튜토리얼 - 파트1 (0) | 2022.03.20 |
모던 javascript info 번역 사이트 (0) | 2021.12.12 |
intersection observer 를 이용해 infinite scroll 구현하기 (0) | 2021.10.28 |
useContext 와 MouseMove 이벤트핸들러 (0) | 2021.10.15 |