Web worker 是运行在后台的JavaScript,不会影响页面的性能。

什么是Web Worker?

当在 HTML 页面中执行脚本时,页面的状态是不可响应的,直到脚本已完成。
web worker 是运行在后台的 JavaScript,独立于其他脚本,不会影响页面的性能。您可以继续做任何愿意做的事情:点击、选取内容等等,而此时 web worker 在后台运行。

创建Web Worker

在外部创建一个js文件,举例设定一个计数脚本,取名为‘worker.js’

var i=0;

function timedCount()
{
    i=i+1;
    postMessage(i);
    setTimeout("timedCount()",500);
}

timedCount();

使用postMessage()方法向HTML页面传回一段消息。
web worker 通常用于更耗费CPU资源的任务,而不是简单任务。

在HTML文档调用web worker

w = new Worker("worker.js")
//为web worker添加一个事件监听器
w.onmessage=function(event){
    document.getElementById("result").innerHTML=event.data;
};

终止 Web Worker

当我们创建 web worker 对象后,它会继续监听消息(即使在外部脚本完成之后)直到其被终止为止。

如需终止 web worker,并释放浏览器/计算机资源,请使用 terminate() 方法:

w.terminate()

注意:由于Web Worker属于外部文件,所以无法访问window对象、document对象和parent对象。