HTML5 web worker

web worker是运行在后台的javascript,javascript是单线程的,当需要处理的运算,比如复杂的排序时候,页面就会出现卡顿,这个时候就需要web worker在后台进行运算把结果返回来,这样主页面就不会出现卡顿现象
1.创建web-worker
var w = new worker(‘sum.js‘)
在sum.js中使用postMeesage方法向其发送数据,这个脚本运行的环境比较特殊,其中的self就指示 web worker 本身,当有给这个web worker 发生信息以后,就会触发它的 message 事件,这个事件对象的data属性中就包含发送来的数据,对数据处理完毕后可以同样使用postMessage方法将数据发送回去。

为了收到web worker 发回来的数据,就需要监听web worker 对象的onmessage事件,其次为了检查错误还需要监听onerror事件。

w.onmessage = function (event) {
  console.log(event.data)
}
w.onerror = function () {
  console.log("ERROR: " + event.filename + " (" + event.lineno + "): " +event.message);
}

以下为web worker内容

var sum = 0;
function timedCount () {
  for (var i = 0; i < 100; i++) {
     for (var j = 0; j < 100000000; j++) {
       sum += 1
     }
  }
  // 将得到的sum发送回主线程
  postMessage(sum);
}
// 将执行timedCount前的时间,通过postMessage发送回主线程
postMessage(‘Before computing, ‘+ sum);
timedCount();
// 结束timedCount后,将结束时间发送回主线程
postMessage(‘After computing, ‘ + sum);

2.终止 Web Worker
w.terminate();

时间: 2024-08-08 09:41:34

HTML5 web worker的相关文章

深入 HTML5 Web Worker 应用实践:多线程编程

深入 HTML5 Web Worker 应用实践:多线程编程 HTML5 中工作线程(Web Worker)简介 至 2008 年 W3C 制定出第一个 HTML5 草案开始,HTML5 承载了越来越多崭新的特性和功能.它不但强化了 Web 系统或网页的表现性能,而且还增加了对本地数据库等 Web 应用功能的支持.其中,最重要的一个便是对多线程的支持.在 HTML5 中提出了工作线程(Web Worker)的概念,并且规范出 Web Worker 的三大主要特征:能够长时间运行(响应),理想的启

HTML5 Web Worker简单使用

Web Workers 是 HTML5 提供的一个javascript多线程解决方案,我们可以将一些大计算量的代码交由web Worker运行而不冻结用户界面. 一:如何使用Worker Web Worker的基本原理就是在当前javascript的主线程中,使用Worker类加载一个javascript文件来开辟一个新的线程,起到互不阻塞执行的效果,并且提供主线程和新线程之间数据交换的接口:postMessage,onmessage. 那么如何使用呢,我们看一个例子: //worker.jso

HTML5 Web Worker的使用

Web Workers 是 HTML5 提供的一个javascript多线程解决方案,我们可以将一些大计算量的代码交由web Worker运行而不冻结用户界面. 一:如何使用Worker Web Worker的基本原理就是在当前javascript的主线程中,使用Worker类加载一个javascript文件来开辟一个新的线程,起到互不阻塞执行的效果,并且提供主线程和新线程之间数据交换的接口:postMessage,onmessage. 那么如何使用呢,我们看一个例子: JavaScript 1

HTML5新增的一些属性和功能之八——web Worker

Web Workers 为什么用web workers? 浏览器的原理中决定了页面打开只有一个主线程--UI渲染线程,如果线程中有耗时的程序(js)会阻塞线程,使得页面中其他的UI无法渲染,我们一般把js文件放在body结束之前,或者优化算法复杂度.但是根本上解决还是线程的问题.在HTML5中新增了web Workers的方法,用来解决JavaScript多线程的问题.把一些耗时的程序放在单独的js中,和浏览器的UI渲染线程同步执行. 如何用: 1.首先把需要单独执行的js代码单独放在一个js文

html5的Web Worker和SSE(Server-Sent-Event)

web worker 是运行在后台的 JavaScript,不会影响页面的性能. 当在 HTML 页面中执行脚本时,页面的状态是不可响应的,直到脚本已完成. web worker 是运行在后台的 JavaScript,独立于其他脚本,不会影响页面的性能.您可以继续做任何愿意做的事情:点击.选取内容等等,而此时 web worker 在后台运行. 创建 web worker 文件 现在,让我们在一个外部 JavaScript 中创建我们的 web worker. 在这里,我们创建了计数脚本.该脚本

通过一次实验来了解HTML5的 Web Worker

web worker 是运行在后台的 JavaScript,不会影响页面的性能. 当在 HTML 页面中执行脚本时,页面的状态是不可响应的,直到脚本已完成. web worker 是运行在后台的 JavaScript,独立于其他脚本,不会影响页面的性能.您可以继续做任何愿意做的事情:点击.选取内容等等,而此时 web worker 在后台运行. 以上是W3School对WebWorker的定义,讲的非常明确.在这段解释中,我一眼就看到了一句话“执行脚本时,页面状态是不可响应的”,这让我想到了BO

Web Worker无阻塞UI的牛逼技术,html5,可惜无法敢于UI

众所周知,JavaScript是单线程的,JS和UI更新共享同一个进程的部分原因是它们之间互访频繁,但由于共享同一个进程也就会造成js代码在运行的时候用户点击界面元素而没有任何响应这样的情况,这么糟糕的用户体验HTML5怎么会不修订了,这样Web Worker诞生了. Web Worker进程加载的js运行的时候不仅不会影响浏览器UI,而且也不会影响其它Web Worker进程加载的JS代码.由于Web Worker进程加载的js运行的时候不会影响浏览器UI,也就说明Web Worker中加载的

html5之Web Worker -- js多线程编程

什么是Web Worker? web worker 是运行在后台的 JavaScript,不占用浏览器自身线程,独立于其他脚本,可以提高应用的总体性能,并且提升用户体验. 一般来说Javascript和UI页面会共用一个线程,在HTML页面中执行js脚本时,页面的状态是不可响应的,直到脚本已完成.而这段代码可以交给Web Worker在后台运行,那么页面在Javascript运行期间依然可以响应用户操作.后台会启动一个worker线程来执行这段代码,用户可以创建多个worker线程. 有两种 W

JS线程模型&amp;Web Worker

js线程模型 客户端javascript是单线程,浏览器无法同时运行两个事件处理程序 设计为单线程的理论是,客户端的javascript函数必须不能运行太长时间,否则会导致web浏览器无法对用户输入做出响应.这也是为什么Ajax的API都是异步的,以及为什么客户端Javascript不能使用一个简单的异步load()或者require()函数来加载javascript库 如果应用程序不得不执行太多的计算而导致明显的延迟,应该允许文档在执行这个计算之前完全载入,并且确保告诉用户正在进行计算并且浏览