网络工作者

Web worker 是在后台线程中运行脚本的简单方法,因为工作线程可以在不干扰用户界面的情况下执行任务(包括使用 xmlHttpRequest 的 I / O 任务)。一旦创建,工作人员就可以通过将消息发布到由该代码指定的事件处理程序(而反之亦然),将可以是不同数据类型(函数除外)的消息发送到创建它的 JavaScript 代码。

可以通过几种方式创建工人。

最常见的是来自一个简单的 URL:

var webworker = new Worker("./path/to/webworker.js");

也可以使用 URL.createObjectURL() 从字符串动态创建 Worker:

var workerData = "function someFunction() {}; console.log('More code');";

var blobURL = URL.createObjectURL(new Blob(["(" + workerData + ")"], { type: "text/javascript" }));

var webworker = new Worker(blobURL);

可以将相同的方法与 Function.toString() 结合使用,从现有函数创建工作者:

var workerFn = function() {
    console.log("I was run");
};

var blobURL = URL.createObjectURL(new Blob(["(" + workerFn.toString() + ")"], { type: "text/javascript" }));

var webworker = new Worker(blobURL);