Web Worker

Web Worker

web worker的作用是为javascript创建多线程环境,允许主线程创建woker线程。
javascript是单线程,在多核cpu的情况下,无法充分利用计算机的计算能力。

基本用法
// 主线程
const myworker = new Worker('./myworker.js') // 创建Worker对象

myworker.postMessage('the data') // 向Worker线程发送数据

myworker.onmessage = function(e) { // 监听通信
  console.log(e.data)
}

myWorder.onerror = function(e) {
  console.log(e)
}

myworker.terminate() // 关闭 Worker线程

// worker线程 ./myworker.js
self.onmessage = function(e) { // 监听通信
  console.log(e.data)
}

self.postMessage('worker data') // 向主线程发送数据

self.close()  // 关闭 Worker线程
主线程创建worker线程对象
  • new Worker(url, options)
const myworker = new Worker('./myworker', {name: 'myworker'})
主线程创建worker线程对象的属性和方法
  • myworker.onerror:指定error事件的监听函数。
  • myworker.onmessage:指定message事件的监听函数。
  • myworker.onmessageerror:监听message,发送数据无法序列化为字符串时触发。
  • myworker.postMessage():向Worker线程发送消息。
  • myworker.terminate():立即终止Worker线程。
Worker 线程的全局对象
  • self.name: worker的名字。该属性只读,构造函数指定。
  • self.onmessage: 指定message时间的监听函数。
  • self.onmessageerror: 监听message,发送数据无法序列化为字符串时触发。
  • self.close(): 关闭worker线程。
  • self.postMessage(): 向主线程发送消息。
  • self.importScripts(): 加载js脚本。
数据通信
  1. 主线程和worker线程通信的是值而不是地址,可以是文本和对象。原理是先将通信内容串行话,然后通信,后者再还原。
  2. 通信内容可以是文本,对象,二进制数据(File, Blob, ArrayBuffer)等类型
注意点
  1. worker线程脚本和主线程是同源。
  2. worker线程无法使用document, window, parent, 可以使用navigator,location,XMLHttpRequest对象。
  3. worker线程无法加载本地文件(file://),必须是网络。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值