20200322
Plan
- 你不知道的 js--程序性能
Notes
web worker
- dedicated worker
let w1 = new Worker("xxx.js");
Inline Worker -- 通过 blob 创建
worker 之间不会共享任何资源
worker 不能访问任何全局变量。可以访问部分全局变量的副本,执行网络操作和定时器,还有 navigator,location,json 和 applicationCache 等
可以通过 importScript (同步执行)加载额外资源,这个会阻塞余下的 worker 执行
transferable 对象,本质上数据没有移动,但是所有权变动了。从一个 worker 到另一个 worker
shared worker
所有页面和实例都可以共享的中心 worker,根据 port 来区分消息。要在 connect 事件中处理 port
addEventListener("connect", evt => {
let [port] = evt.ports;
port.addEventListener("message", () => {
// ...
});
// 这里需要初始化链接
port.start();
});