web worker

web worker

1.解决问题:

js是单线程的,即一次只能做一件事,所以当js代码中存在大计算量任务时势必会造成阻塞,webworker就是基于浏览器新增另一条线程来执行大计算量任务,从而解决运行阻塞的问题,例如下面代码:

console.time('1号任务')
console.time('2号任务')

for(let i=1;i<10000000000;i++){
    // 模拟大计算量的任务,后续的任务会因为这段代码阻塞
}
console.timeEnd('1号任务')

setTimeout(()=>{
    console.timeEnd('2号任务')
},2000)

2.使用方法:

创建一个新的js文件,将需要执行的任务放入,并用服务器环境启动

使用web worker语法

// test.js 存放大计算量代码
console.time('1号任务')
for(let i=1;i<10000000000;i++){
    // 模拟大计算量的任务,后续的任务会因为这段代码阻塞
}

// 向主线程发送消息
postMessage(a)

console.timeEnd('1号任务')
// index.js
console.time('2号任务')

// 语法(参数是分线程路径)
const w = new Worker('./test.js')

// 监听分线程发送的消息
w.onmessage = (data)=>{
    console.log(data.data)
}

// 监听分线程错误
w.onerror = ()=>{
    console.log('分线程出错了')
}

setTimeout(()=>{
    console.timeEnd('2号任务')
},2000)
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值