web worker 是一种在后台线程中运行脚本的简单方法,因为工作线程可以在不干扰用户界面的情况下执行任务(包括使用 xmlHttpRequest 的 I/O 任务)。创建后,worker 可以通过将消息发布到该代码指定的事件处理程序(反之亦然),将可以是不同数据类型(函数除外)的消息发送到创建它的 JavaScript 代码。
可以通过几种方式创建工人。
最常见的是来自一个简单的 URL:
var webworker = new Worker("./path/to/webworker.js");
也可以使用以下方法从字符串动态创建 Worker :URL.createObjectURL()
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);