Web Worker

作者: TralafalgarV | 来源:发表于2020-11-26 17:58 被阅读0次
作用

为 JavaScript 创造多线程环境,允许主线程创建 Worker 线程,将一些任务分配给后者运行。在主线程运行的同时,Worker 线程在后台运行,两者互不干扰;
Worker 线程一旦新建成功,就会始终运行,不会被主线程上的活动(比如用户点击按钮、提交表单)打断。这样有利于随时响应主线程的通信。但是,这也造成了 Worker 比较耗费资源,不应该过度使用,而且一旦使用完毕,就应该关闭。

基本用法:

主线程通过new一个 Worker 对象,新建一个worker线程。

var worker = new Worker(‘http://xxxx_work.js');  // 脚本必须来自于网络,没有操作本地文件能力
  • 主线程:
    通过 worker.postMessageworker.onmessage 来发送和接收来着子线程的消息;
worker.terminate();  // 杀掉子线程
  • worker线程:
self.addEventListener('message', function (e) {
  self.postMessage('You said: ' + e.data);
}, false);

通过addEventListener来监听message事件,e. data 包含主线程发来的数据;

self.close();  // 杀掉子线程
Worker内部加载其他脚本

有一个专门的方法importScripts()

importScripts('script1.js', 'script2.js');  // 可以加载多个
缺点

Web Worker是临时的,每次运行的结果不能持久的保持下来,下次有复杂的运算,还需要重新计算一次。为了解决这个问题,推出了Service Worker,相对于web worker增加了离线缓存能力。

限制
  • 同源限制:与主线程脚本同源;
  • DOM限制:无法读取主线程页面DOM对象;
  • 通信联系:与主线程不在同一个上下文,无法直接通信,必须通过消息;
  • 脚本限制:无法执行 alert()confirm()方法,但可以发出AJAX;
  • 文件限制:无法操作本机文件系统;

相关文章

  • web worker 处理多文件并行上传

    一 web worker: 什么是web worker Web Worker为Web内容在后台线程中运行脚本提供...

  • Javascript:Web Worker基础

    参考资料Web Workersweb worker详解Blob对象 Web Worker分为专属Worker(De...

  • web worker

    web Worker web Worker 文件单独写在一个文件中,在main worker 中 执行的文件里使用...

  • Web Worker

    一、Web Worker 1. Web Worker是 运行在后台的javascript,也就是说worker其实...

  • 为你写的网页“提速”---Web Worker

    认识Web Worker Web Worker是 运行在后台的javascript,也就是说worker其实就是就...

  • Web Worker

    什么是Web Worker? Web Worker是 运行在后台的javascript,也就是说worker其实就...

  • NFH.009 - Web Worker与Web Socket

    12.22学习经验分享# Bruce_Zhu于2016.12.23 一、Web Worker Web Worker...

  • service worker

    Service Worker是继web Worker后又一个新的线程,这个线程比web worker独立得更彻底,...

  • 关于Web Worker

    Web Worker Web Worker 的作用,就是为 JavaScript 创造多线程环境,允许主线程创建 ...

  • Web Worker的使用

    什么是 Web Worker? Web Worker 的作用,就是为 JavaScript 创造多线程环境,允许主...

网友评论

    本文标题:Web Worker

    本文链接:https://www.haomeiwen.com/subject/azrziktx.html