← Back to NOTES 🌰
← Effective JavaScript 🤿
← 아이템 64 - 비동기적인 반복문을 위해 재귀를 사용하라
핵심 요약
- 메인 이벤트 큐에서 비싼 알고리즘을 실행하지 마라
- WebWorker 같은 플랫폼을 지원한다면, 복잡한 연산은 별도의 이벤트 큐에서 실행하라
- WebWorker 같은 것을 사용할 수 없다면, 연산을 여러 번 쪼개서 계산하라
- setTimeout을 사용하여 연산을 여러 이벤트 루프 턴에 나누어 실행할 수 있음
- 무거운 작업을 분할하면 UI가 블로킹되지 않고 반응성을 유지할 수 있음
자세한 내용
문제: 비싼 연산과 이벤트 큐 블로킹
애플리케이션이 값비싼 연산을 수행해야 할 필요가 있다면 어떻게 해야 할까?
해결 방법 1: API 활용해서 동시성 Mechanism 사용
Web Workers
Single Thread로 동작하는 자바스크립트와 달리, 브라우저는 Single Thread로 동작하지 않아도 된다.
무거운 작업은 WebWorker를 활용하여 새로운 Thread에서 실행할 수 있다.
WebWorker에서 사용하는 함수:
postMessage: 웹 워커에 데이터 전달
onMessage: 데이터를 받았을 때 어떤 행동할지 정의
해결 방법 2: 알고리즘을 여러 단계로 쪼개는 방법