Web worker有以下两种类型:

1. Dedicated worker (专用)

  属于单页面共享,目前除了IE之外各浏览器支持比较广泛;

// 页面中执行var work1 = window.work1 = new Worker("worker_1.js");
work1.onmessage = function (e) {console.log("Receive message:", e.data, e);
};
work1.postMessage("data to worker.");

// worker_1.js: 单独线程中执行
onmessage = function (e) {console.log("Receive from main:", e.data, e);
};var count = 0;
setInterval(function () {postMessage("Message data" + count++);
}, 5000);

2. SharedWorker

  多页面共享,可以当做多页面之间交互的一种解决方案;当前Firefox 29以上才支持;

// 页面中执行if(!window.SharedWorker){alert("Your browser does not support SharedWorker!");return;
}var work2 = window.work2 = new SharedWorker("worker_2.js");
work2.port.onmessage = function (e) {console.log("Receive:", e.data, e);
};
work2.port.start();
//work2.port.postMessage("data to worker.");

// worker_2.js: 单独线程中执行var userCount = 0;
var portList = [];onconnect = function (e) {var port = e.ports[0];portList.push(port);port.postMessage("Accept new user with count:" + userCount);port.onmessage = function (e) {    // 向所有接受者发送
    for(var i=0; i<portList.length; i++){portList[i].postMessage("Send accepted msg:" + portList.length + i + e.data);}};
};

  它们的scope|context并不是window,均继承自WorkerGlobalScope,前者为 DedicatedWorkerGlobalScope,后者为 SharedWorkerGlobalScope;在Chrome 38版本上后者不支持console的输出,目前MDN也没有相应的文档;

参考资料:

1. Dedicated worker    https://developer.mozilla.org/en-US/docs/Web/API/Worker

2. SharedWorker       https://developer.mozilla.org/en-US/docs/Web/API/SharedWorker

转载于:https://www.cnblogs.com/diydyq/p/4095329.html

Web worker总结相关推荐

  1. 深入理解javascript异步编程障眼法h5 web worker实现多线程

    0.从一道题说起 var t = true; setTimeout(function(){ t = false; }, 1000); while(t){ } alert('end'); 1 2 3 4 ...

  2. 什么是Web Worker?

    简单点说,Web Worker就是一个运行在后台的JavaScript线程,不会影响页面的响应. 我们知道,JavaScript是单线程的脚本语言,即同一时刻只能做一件事情,否则会带来极其复杂的同步问 ...

  3. JavaScript多线程之HTML5 Web Worker

    在博主的前些文章Promise的前世今生和妙用技巧和JavaScript单线程和浏览器事件循环简述中都曾提到了HTML5 Web Worker这一个概念.在JavaScript单线程和浏览器事件循环简 ...

  4. web worker技术-js新线程

    web worker的小例子,用来入门很合适,建议启动服务来开发.可以使用node的anywhere. <!DOCTYPE html> <html lang="en&quo ...

  5. web worker的介绍和使用

    文章目录 简介 Web Workers的基本概念和使用 Web Workers的分类 worker和main thread之间的数据传输 简介 什么是web worker呢?从名字上就可以看出,web ...

  6. HTML5 Web Worker

    <!DOCTYPE html> <html><head><meta charset="utf-8" /><title>& ...

  7. 如何debug web worker

    Created by Jerry Wang on Aug 12, 2014 Web Workers 为 Web 前端网页上的脚本提供了一种能在后台进程中运行的方法.一旦它被创建,Web Workers ...

  8. 如何调试 web worker

    Created by Jerry Wang on Aug 12, 2014 Web Workers 为 Web 前端网页上的脚本提供了一种能在后台进程中运行的方法.一旦它被创建,Web Workers ...

  9. Web Worker javascript多线程编程(一)

    什么是Web Worker? web worker 是运行在后台的 JavaScript,不占用浏览器自身线程,独立于其他脚本,可以提高应用的总体性能,并且提升用户体验. 一般来说Javascript ...

  10. 如何查找历史线程阻塞原因_学习 Web Worker(js中的“多线程”)

    昨天部门例会,讨论开发的系统遇到的问题,遇到一个医保上传比较耗时的问题,解决方案提到了Web Worker,学习一波. 首先简单介绍一下什么是web worker.我们都知道在浏览器中javascri ...

最新文章

  1. Qt5开发及实例学习之文件系统浏览
  2. 施一公:世界如此未知,还有什么物事必须难以释怀?
  3. 小程序 - 效果处理之技巧合集(更新中...)
  4. 融云php sdk下载安装,LICENSE · 融云 RongCloud/server-sdk-php-composer - Gitee.com
  5. 【网络安全】 利用 EHole 进行红队快速批量打点
  6. Android应用开发以及设计思想深度剖析(2)
  7. Open3D 凸包算法
  8. nfc pm3 模拟加密门禁卡_手机/手环NFC模拟加密门禁卡电梯卡最全教程之初期判断...
  9. 小白学六轴传感器MPU6050模块(1)
  10. 计算机病毒的危害评价,计算机病毒危害评析
  11. mma7660(gsensor)的hwmon驱动
  12. 网络中的公网和内网 (ipv4)
  13. Swift游戏实战-跑酷熊猫(一) 简介 (含源代码)
  14. c语言专业认知实践报告怎么写,c语言实践报告心得范文
  15. C#中位枚举(Flags)
  16. Android初级基础知识复习(十八) —— 自定义通知栏
  17. 问题解决:openCV处理视频、手机拍摄视频自旋转(90度)
  18. Linux上传GitHub【超详细】
  19. 「Arm Arch」 ISA 概述
  20. 南京信息工程大学 2021年 考研 软件工程 复试经验分享

热门文章

  1. 20年备受关注的6款数据工具!谁最好用?毫无争议的答案来了
  2. php mysql addslashes_PHP函数 mysql_real_escape_string 与 addslashes 的区别
  3. 文献管理与信息分析_全球酒店PMS行业市场现状分析,酒店信息管理全链条的灵魂...
  4. mysql查询php输出表格_MySql数据库查询结果用表格输出PHP代码示例_PHP教程
  5. 人脸关键点: Wing Loss for Robust Facial Landmark Localisation with Convolutional Neural Networks
  6. pytorch学习笔记(三十三):梯度下降和随机梯度下降
  7. 目标检测——neck组件的学习笔记
  8. 使用 ONNX 模型做预测
  9. 数组问题常用的O(N)算法:单调队列
  10. ESP32+st7789/ili9341运行LVGL例程,依赖ESP-IDF编译lv_port_esp32官方Demo(1)