千家信息网

怎么进行Web Worker线程处理

发表于:2026-11-03 作者:千家信息网编辑
千家信息网最后更新 2026年11月03日,本篇文章为大家展示了怎么进行Web Worker线程处理,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。1 浏览器把所有事件都通过操作系统安排到事件队列中(例如
千家信息网最后更新 2026年11月03日怎么进行Web Worker线程处理

本篇文章为大家展示了怎么进行Web Worker线程处理,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。

1 浏览器把所有事件都通过操作系统安排到事件队列中(例如:你去一个·窗口买菜,需要排队);浏览器使用单线程处理队列中的事件和执行用户代码(也就是单线程;web workers除外)。

  因此,浏览器每次只能处理这些任务中的一个,并且任意一个任务都能阻止其他任务的执行。

2 怎样判断代码"足够快"?0.1秒的用户体验为:用户可以随意操作,无需等待;0.2~1.0秒的延迟会被用户注意到;如果超过1秒,那么用户会觉得不流畅;超过10秒,用户会非常沮丧。

  手动代码检测:

...
function jsTest(){ var start = new Date().getMilliseconds();//这里是一个开销很大的代码var time = stop - start;alert("jsTest() executes in " + time + " milliseconds"); }

  fireBug的性能分析器

可以在测量的代码中加入特定代码来收集性能统计信息,或者在特定时间中实时检验具体执行的代码来监视运行时间。后者分析的代买性能失真少,但获取到的数据质量会第一点。你可以通过(点击"发送"按钮)

然后再星星firebug性能分析器查看耗时。

3 线程处理

使用多线程把开销大的代码从与用户交互的线程中剥离开来。多线程的基本问题是不同的线程可以访问并修改相同的地址。(我们需要的是一种像多线程那样能多任务执行却没有线程之间互相侵入危险的方法)

4 Web Workers

让我们来看一下如何利用Web Workers API 对值进行解封装。如下展示了如何创建并启动Worker:

//创建并开始执行workervar worker = new Worker("js/decrypt.js"); //注册事件处理程序,当worker给主线程发送信息时执行worker.onmessage = function(e){  alert("The decrypted value is" + e.data);} //发送信息给worker,这里指待解密的值worker.postMessage(getValueToDecrypt()); //下面为js/decrypt.js中的内容://注册用来接收来自主线程信息的处理程序onmessage = function(e){  //获取传过来的数据  var valueToDecrypt = e.data;  //TODO:这里实现解密功能  //把值返回给主线程  this.postMessage(decryptedValue);}

 在页面上任何开销很大的(例如,长时间运行)javascript操作都应委托给Worker;可以是运行速度更快。

5 如果你所使用的浏览器不支持Web Worker API ,那么可以用Gears Worker API ;代码如下:
//创建worker Pool,它会产生Workervar workerPool = google.gears.factory.create('beta.workpool'); //注册事件处理程序,他接收来自Worker的信息workerPool.onmessage = function(ignorel, ignorel2, e){  alert("The decrypted value is" + e.body);} //创建Workervar workerId = workerPool.createWorkerFromUrl("js/decrypt.js"); //发送信息到这个WorkerworkerPool.sendMessage(getValueToDecrpt(). workerId); //下面是js/decrypt.js的Gears版本: var workerPool = google.gears.workerPool;workerPool.onmessage = function(ignorel, ignorel2, e){  //获得传递过来的数据  var getValueToDecrpt = e.body;  //TODO:这里实现封装功能   //把值返回给主线程  workerPool.sendMessage(decryptedValue, e.sender);}

 6. 定时器

var funState = {};function expensiveOperation(){  var startTime = new Date().getMilliseconds();  while ((new Date().getMilliseconds() - startTime) < 80){    //TODO:它用如下方法执行开销很大的运算:    //它在迭代的语块中执行80毫秒内完成的工作,    //然后修改本函数外部"function"中的状态。  }  if(!funState.isFinished){    //退出10秒后再执行expensiveOperation;    //用较大的值进行试验,以在Ui响应和性能上取得合适的平衡    setTimeout(expensiveOperation(),10);  }}

  XHRHttpRequest: XHR 有同步与异步的执行模式。在异步模式中,XHR实质上就是一个拥有专用API的Web Worker。

  XHR在在同步模式中,会导致用户界面的持续延迟时间与XHR发送他的请求并解析来自服务端响应的整体耗时一样。还会导致不可预知和用户不能容忍的界面延迟。

上述内容就是怎么进行Web Worker线程处理,你们学到知识或技能了吗?如果还想学到更多技能或者丰富自己的知识储备,欢迎关注行业资讯频道。

线程 代码 用户 处理 信息 事件 性能 任务 开销 浏览器 浏览 很大 内容 数据 时间 模式 程序 分析 延迟 运行 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 亿人帮互联网科技有限公司 科技互联网龙头 互联网科技公司的优势 腾讯阿里互联网科技 西安互联网科技 佰商互联网科技有限公司 盛创互联网科技有限公司 中国最先进互联网科技公司 北京三清互联网科技 互联网科技与大数据专业 广西互联网科技孵化中心 允成互联网科技有限公司融资 广州新华互联网科技学校电竞方面 互联网科技如何创业 上海京穆互联网科技有限公司 深圳互联网科技的发展 互联网科技实习生岗位 普陀区互联网教育科技管理办法 华人运通互联网科技公司 互联网科技企业文化 互联网科技战争 广州宏创互联网科技 南京欣网互联网科技 盛创互联网科技有限公司 衡水科技产业互联网平台 中国最先进互联网科技公司 开启互联网科技时代小说 允成互联网科技有限公司融资 有人说阿里系是互联网科技企业 银川新华互联网科技学校招聘
0