관리 메뉴

프론트엔드 정복하기

모던 Javascript 튜토리얼 - 파트2 본문

JavaScript

모던 Javascript 튜토리얼 - 파트2

GROWNFRESH 2022. 3. 28. 22:11

 6.3 이벤트 루프와 매크로, 마이크로 태스크 

자바스크립트 엔진을 활성화하는(=이벤트 루프가 활성화되는) 태스크
  - script 가 로드될 때
  - mouse 이벤트 등의 이벤트 핸들러 실행될때
  - setTimeout 에서 콜백함수가 실행될때 기타 등등..

알아둘만한 지식!
  - 엔진이 특정 태스크 처리하는 동안 --> 렌더링이 일어나지 않는다! (DOM 변경 x)
  - 마이크로태스크는 다른 이벤트 핸들러, 렌더링 작업, 매크로태스크가 실행되기 전에 처리된다.
  - 마이크로태스크 전체가 처리되는 동안에는 UI 변화나 네트워크 이벤트 핸들링이 일어나지 않습니다. 렌더링이나 네트워크 요청 등의 작업들은 마이크로태스크 전부가 처리되고 난 직후 처리됩니다.
 
이에 따른 활용방안
  - CPU 소모가 많은 태스크는 쪼갠다.
    - 일부 태스크를 먼저 하도록 하고, 나머지 태스크는 지연시간이 0인 setTimeout으로 새롭게 스케줄링한다.
    - 그렇다면, 중간에 onclick 이벤트같은 새로운 태스크가 두번째 스케줄링된 태스크 이전에 실행된다.

- 마이크로태스크: .then/catch/finally, await, queueMicrotask(function)
- 매크로태스크: script, mouse event, setTimeout, ..

- 자바스크립트 엔진은 매크로태스크 하나를 처리할 때마다 또 다른 매크로태스크나 렌더링 작업을 하기 전에, 마이크로태스크 큐에 쌓인 마이크로태스크 전부를 처리한다.