2013-02-23 2 views
9

JavaScript로 HTML5 WebWorker를 파괴 할 수있는 방법이 있습니까?WebWorkers 파괴

제 상황은 다음과 같습니다. 일부 렌더링 과정을 최적화하기 위해 WebWorkers (16에서 32 사이의 임의의 위치)를 적당히 생성하는 웹 응용 프로그램이 있습니다. 이 프로세스는 처음 몇 번 제대로 작동하지만 스크립트를 여러 번 실행하면 페이지가 다시로드되지 않고 페이지가 종료됩니다. 한 번에 많이 (100+) WebWorkers를 생성하려고 할 때와 같은 오류입니다. 그래서 나는 같은 장벽에 뛰어 들어 있다고 가정합니다.

스크립트가 두 번 이상 실행되면 첫 번째 라운드에서 인스턴스화 된 WebWorkers가 더 이상 존재하지 않아도됩니다. 나는 WebWorker 객체를 재사용하지 않는다. 처음 작성한 WebWorkers를 파괴하여 새로운 WebWorkers를 생성하려고 시도 할 때 스크립트의 향후 실행이 지연되지 않도록하고 싶습니다.

크롬 및 Firefox에서만이 문제를 발견했습니다. Safari에는 이러한 제한이없는 것 같습니다.

답변

10

당신은 즉시 작업자 종료 기본 창에서이 전화를 할 수 있어야한다 : 자신이 볼 당신은 노동자에서 close()를 호출 할 수 있습니다, 또는 https://developer.mozilla.org/en-US/docs/DOM/Using_web_workers

:

myWorker.terminate(); 

이 여기에 전체 API 참조 : https://developer.mozilla.org/en-US/docs/DOM/Using_web_workers

+0

정확히 내가 무엇을 찾고 있었습니까. –

+0

하지만 작업 완료만으로 작업자의 인스턴스가 메모리에 남아 있습니다. – vsync

+1

@vsync WebWorker 인스턴스도 함께 작업하고 있습니다. 필자의 경우 4 명의 웹 작업자가 처리해야하고 브라우저로 다시 보내지는 각 웹 작업자에게 전달하는 몇 가지 정보를 기반으로 매 초마다 업데이트해야하는 4 개의 DOM 영역에서 작업해야합니다. 이 사용 사례에서는 각 호출 후에 각 WebWorker를 종료()/닫기()해야합니까? 아니면 성능 문제, 메모리 누수 등을 걱정하지 않고 동일한 WebWork를 재사용 할 수 있습니까? –