웹 워커란 무엇인가?
웹 워커(Web Workers)는 클릭이나 기타 사용자 상호작용에 반응하는 스크립트에 의해 중단되지 않으면서 오랜 시간 실행되는 스크립트를 지원합니다. 덕분에 페이지의 응답성을 유지한 채로 시간이 오래 걸리는 작업을 백그라운드에서 처리할 수 있습니다.
웹 워커는 백그라운드에서 동작하는 스크립트로, 상대적으로 리소스 소모가 크기 때문에 대량으로 생성해 사용하도록 설계된 기능이 아닙니다. 예를 들어 400만 픽셀(4메가픽셀) 이미지의 각 픽셀마다 하나의 워커를 생성하는 것은 적절하지 않습니다.
웹 워커의 초기화
웹 워커는 워커가 실행할 코드를 담고 있는 자바스크립트 파일의 URL을 통해 초기화됩니다. 해당 파일 안의 코드는 이벤트 리스너를 설정하고, 메인 페이지에서 워커를 생성한 스크립트와 통신하게 됩니다.
구문(Syntax)
다음은 웹 워커를 생성하는 기본적인 구문입니다.
var worker = new Worker('bigLoop.js');워커와 메인 스레드 간의 통신
생성된 워커는 메인 페이지와 직접 변수를 공유하지 않으며, 대신 postMessage() 메서드와 onmessage 이벤트 핸들러를 통해 데이터를 주고받습니다.
// 메인 스크립트worker.postMessage('start');worker.onmessage = function(e) { console.log('워커로부터 받은 메시지: ' + e.data);};이러한 구조 덕분에 복잡한 계산이나 대용량 데이터 처리 작업을 워커에게 위임하더라도, 메인 UI 스레드는 끊김 없이 부드럽게 동작할 수 있습니다.