20200322

@xiaojingzhao

Plan

  • 你不知道的 js--程序性能

Notes

web worker

  1. dedicated worker
let w1 = new Worker("xxx.js");
  1. Inline Worker -- 通过 blob 创建

  2. worker 之间不会共享任何资源

  3. worker 不能访问任何全局变量。可以访问部分全局变量的副本,执行网络操作和定时器,还有 navigator,location,json 和 applicationCache 等

  4. 可以通过 importScript (同步执行)加载额外资源,这个会阻塞余下的 worker 执行

  5. transferable 对象,本质上数据没有移动,但是所有权变动了。从一个 worker 到另一个 worker

shared worker

所有页面和实例都可以共享的中心 worker,根据 port 来区分消息。要在 connect 事件中处理 port

addEventListener("connect", evt => {
  let [port] = evt.ports;
  port.addEventListener("message", () => {
    // ...
  });
  // 这里需要初始化链接
  port.start();
});

More