2013-02-23 97 views
9

有沒有辦法在JavaScript中銷燬HTML5 WebWorkers?破壞WebWorkers

這是我的情況:我有一個Web應用程序,可以生成相當數量的WebWorkers(16到32之間的任何地方)來優化某些渲染過程。這個過程在最初的幾次中運行良好,但是當腳本運行多次(不重新加載頁面)時,頁面就會死掉。當我嘗試同時產生大量(100多個)Web工作者時,會出現同樣的錯誤,所以我假設我遇到了同樣的障礙。

當腳本運行多次時,第一輪實例化的WebWorkers不再需要存在;我不重用任何WebWorker對象。我想摧毀第一次創建的WebWorkers,這樣在未來嘗試生成新的WebWorkers時腳本的執行不會停止。

我只在Chrome和Firefox中注意到這個問題; Safari似乎沒有這個限制。

回答

10

您應該能夠從主窗口調用該立即終止工人:

myWorker.terminate(); 

查看完整的API在這裏:https://developer.mozilla.org/en-US/docs/DOM/Using_web_workers

或者,你可以調用close()從工人本身看:https://developer.mozilla.org/en-US/docs/DOM/Using_web_workers

+0

正是我在找的東西。 – 2013-02-23 07:09:26

+0

但它只會阻止工作人員完成任務,工作人員的實例仍在內存中。 – vsync 2015-09-13 15:08:35

+1

@vsync我也正在使用WebWorker實例。就我而言,我需要4個Web工作人員來處理4個不同的DOM區域,這些區域需要每秒更新一次,這是基於我傳遞給每個Web工作人員並處理併發送回瀏覽器的一些信息。在這個用例中,我應該在每次調用之後終止()/關閉()每個WebWorker,還是可以重複使用同一個WebWorker,而不必擔心性能問題,內存泄漏等問題? – 2016-07-31 17:09:35