Web worker总结
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总结相关推荐
- 深入理解javascript异步编程障眼法h5 web worker实现多线程
0.从一道题说起 var t = true; setTimeout(function(){ t = false; }, 1000); while(t){ } alert('end'); 1 2 3 4 ...
- 什么是Web Worker?
简单点说,Web Worker就是一个运行在后台的JavaScript线程,不会影响页面的响应. 我们知道,JavaScript是单线程的脚本语言,即同一时刻只能做一件事情,否则会带来极其复杂的同步问 ...
- JavaScript多线程之HTML5 Web Worker
在博主的前些文章Promise的前世今生和妙用技巧和JavaScript单线程和浏览器事件循环简述中都曾提到了HTML5 Web Worker这一个概念.在JavaScript单线程和浏览器事件循环简 ...
- web worker技术-js新线程
web worker的小例子,用来入门很合适,建议启动服务来开发.可以使用node的anywhere. <!DOCTYPE html> <html lang="en&quo ...
- web worker的介绍和使用
文章目录 简介 Web Workers的基本概念和使用 Web Workers的分类 worker和main thread之间的数据传输 简介 什么是web worker呢?从名字上就可以看出,web ...
- HTML5 Web Worker
<!DOCTYPE html> <html><head><meta charset="utf-8" /><title>& ...
- 如何debug web worker
Created by Jerry Wang on Aug 12, 2014 Web Workers 为 Web 前端网页上的脚本提供了一种能在后台进程中运行的方法.一旦它被创建,Web Workers ...
- 如何调试 web worker
Created by Jerry Wang on Aug 12, 2014 Web Workers 为 Web 前端网页上的脚本提供了一种能在后台进程中运行的方法.一旦它被创建,Web Workers ...
- Web Worker javascript多线程编程(一)
什么是Web Worker? web worker 是运行在后台的 JavaScript,不占用浏览器自身线程,独立于其他脚本,可以提高应用的总体性能,并且提升用户体验. 一般来说Javascript ...
- 如何查找历史线程阻塞原因_学习 Web Worker(js中的“多线程”)
昨天部门例会,讨论开发的系统遇到的问题,遇到一个医保上传比较耗时的问题,解决方案提到了Web Worker,学习一波. 首先简单介绍一下什么是web worker.我们都知道在浏览器中javascri ...
最新文章
- Qt5开发及实例学习之文件系统浏览
- 施一公:世界如此未知,还有什么物事必须难以释怀?
- 小程序 - 效果处理之技巧合集(更新中...)
- 融云php sdk下载安装,LICENSE · 融云 RongCloud/server-sdk-php-composer - Gitee.com
- 【网络安全】 利用 EHole 进行红队快速批量打点
- Android应用开发以及设计思想深度剖析(2)
- Open3D 凸包算法
- nfc pm3 模拟加密门禁卡_手机/手环NFC模拟加密门禁卡电梯卡最全教程之初期判断...
- 小白学六轴传感器MPU6050模块(1)
- 计算机病毒的危害评价,计算机病毒危害评析
- mma7660(gsensor)的hwmon驱动
- 网络中的公网和内网 (ipv4)
- Swift游戏实战-跑酷熊猫(一) 简介 (含源代码)
- c语言专业认知实践报告怎么写,c语言实践报告心得范文
- C#中位枚举(Flags)
- Android初级基础知识复习(十八) —— 自定义通知栏
- 问题解决:openCV处理视频、手机拍摄视频自旋转(90度)
- Linux上传GitHub【超详细】
- 「Arm Arch」 ISA 概述
- 南京信息工程大学 2021年 考研 软件工程 复试经验分享
热门文章
- 20年备受关注的6款数据工具!谁最好用?毫无争议的答案来了
- php mysql addslashes_PHP函数 mysql_real_escape_string 与 addslashes 的区别
- 文献管理与信息分析_全球酒店PMS行业市场现状分析,酒店信息管理全链条的灵魂...
- mysql查询php输出表格_MySql数据库查询结果用表格输出PHP代码示例_PHP教程
- 人脸关键点: Wing Loss for Robust Facial Landmark Localisation with Convolutional Neural Networks
- pytorch学习笔记(三十三):梯度下降和随机梯度下降
- 目标检测——neck组件的学习笔记
- 使用 ONNX 模型做预测
- 数组问题常用的O(N)算法:单调队列
- ESP32+st7789/ili9341运行LVGL例程,依赖ESP-IDF编译lv_port_esp32官方Demo(1)