JavaScript中的Web Work

Web Worker

Web Workder是HTML5 提供的一个JavaScript多线程解决方案,可以将一些需要大量计算的代码交给Web Worker 运行,而不会造成界面的卡顿。

但是子线程完全受主线程控制,并且子线程不得操作DOM。

web worker 的使用

首先需要创建在分线程执行的js文件,并在主线程中的js中发消息并设置回调。

主线程代码如下:

// 主线程代码
// 创建一个Worker 对象,并向它传递需要在子线程中执行的脚本URL
var worker = new Worker('worker.js');
// 接受不了worker传过来的数据函数
worker.onmessage = function(event) {
    console.log(event.data);
}
// 向worker发送数据
worker.postMessage('post message');

分线程代码如下:

// worker.js
var onmessage = function(event) {
	// 这里执行或者调用耗时操作
	...
	// 下面将子线程的数据返回
	postMessage('return message')
}

这里需要注意的是,在分线程中的this指向的全局Worker对象,不指向Window,所以不能在子线程执行alert方法,不能更新UI。

不足

  • 无法跨域加载js
  • 有的浏览器不兼容
发布了80 篇原创文章 · 获赞 135 · 访问量 20万+

猜你喜欢

转载自blog.csdn.net/qq_37954086/article/details/101916644