Web Worker
重要通知
。
基本概况
安装配置
使用示例
使用示例
改进优化
问题,改进思路,具体方案。
Web Workers
通过使用Web Workers,Web应用程序可以在独立于主线程的后台线程中,用于更耗费 CPU 资源的任务。这样做的好处是可以在独立线程中执行费时的处理任务,从而允许主线程(通常是UI线程)不会因此被阻塞/放慢。 web worker 是运行在后台的 JavaScript,不会影响页面的性能 用于更耗费 CPU 资源的任务
- MDN:https://developer.mozilla.org/zh-CN/docs/Web/API/Web_Workers_API
Web Workers与主进程程序通信
//主线程从子线程接收的消息
worker.onmessage = function(event) {
console.log(event);
};
// 子线程向主线程发送消息
postMessage(data);
Worker线程约束限制条例
受主线程控制 不能操作DOM对象 | window document parent 遵循同源策略
为什么Worker受主线程控制?
这与JS为什么被设计成单线程的原因是一致的;
为什么Worker不能操作DOM?
这与JS为什么被设计成单线程的原因是一致的;
Web Workers访问网络
worker 可以通过 XMLHttpRequest 来访问网络,只不过 XMLHttpRequest 的 responseXML 和 channel 这两个属性的值将总是 null 。
Shared Workers
SharedWorker 接口代表一种特定类型的 worker,可以从几个浏览上下文中访问,例如几个窗口、iframe 或其他 worker。
同源策略
如果要使 SharedWorker 连接到多个不同的页面,这些页面必须是同源。
多个Tab网页共享一个Worker进程
var worker = new SharedWorker("SharedWorker.js");