웹 워커?
웹 브라우저에서 스레드를 사용하여 script를 백그라운드에서 수행할 수 있도록 해줌
Web Workers API
postMessage : Worker 자신의 내부 영역으로 메시지를 전달. 해당 메소드는 Worker 자신에게 보낸 data를 받음
terminate : 즉시 Worker를 종료
onmessage : Worker 객체의 message 이벤트를 구독하면 워커로부터의 메시지를 전달받을 수 있다.
onerror : Worker 객체가 예외를 발생시켰으나 내부적으로 처리되지는 않았다면, 해당 예외는 onerror에 전파된다.
활용 방법
1. 백그라운드에서 수행할 작업을 js에 작성(onmessage 함수)
// js/worker.js
onmessage = function (e) {
const data = e.data; // 포그라운드에서 postMessage로 넘겨준 데이터
// 작업수행
postMessage(/* data */) // 백그라운드 작업 완료시 포그라운드로 메시지
};
2. Worker 객체 생성시 백그라운드에서 실행될 js 페이지의 경로를 넣어줌
// index.html
var worker = new Worker("js/worker.js");
3. Worker가 스레드 상에서 postMessage를 호출할 경우(1) 포그라운드에서 수행할 작업을 작성 (보통 HTML 렌더링 작업)
// index.html
worker.onmessage = function (e) {
const data = e.data; // 백그라운드에서 postMessage로 넘겨준 data
// data를 렌더링
};
4. 생성된 Worker의 postMessage를 호출하여 백그라운드 작업 실행
// index.html
worker.postMessage(/* data */)
'개발 > JS' 카테고리의 다른 글
[JS] 이메일 정규식 (0) | 2019.11.16 |
---|---|
[Cypress] Cypress 사용하여 Express로 만든 웹 서버 테스트 해보기 (0) | 2019.09.15 |
[Jest] describe (0) | 2019.09.14 |
[NodeJS] EventEmitter (0) | 2019.08.24 |
[JS 기초] Generator 함수 (0) | 2019.08.22 |