Web Worker 优化长任务
创作时间:
作者:
@小白创作中心
Web Worker 优化长任务
引用
CSDN
1.
https://blog.csdn.net/weixin_45822171/article/details/137049061
在前端开发中,长任务常常会导致页面卡顿和掉帧问题。本文将介绍如何使用Web Worker来优化长任务,避免页面UI阻塞。通过具体的代码示例和性能测试工具的使用,帮助读者理解Web Worker的工作原理和应用场景。
由于浏览器GUI渲染线程与JS引擎线程是互斥的关系,当页面中有很多长任务时,会造成页面UI阻塞,出现界面卡顿、掉帧等情况。
查看页面的长任务
打开控制台,选择Performance工具,点击Start按钮,展开Main选项,会发现有很多红色的三角,这些就属于长任务(长任务:执行时间超过50ms的任务)。
测试实验
如果直接把下面这段代码直接丢到主线程中,计算过程中页面一直处于卡死状态,无法操作。
let sum = 0;
for (let i = 0; i < 200000; i++) {
for (let i = 0; i < 10000; i++) {
sum += Math.random()
}
}
使用Web Worker执行上述代码时,计算过程中页面正常可操作、无卡顿。
// worker.js
onmessage = function (e) {
// onmessage获取传入的初始值
let sum = e.data;
for (let i = 0; i < 200000; i++) {
for (let i = 0; i < 10000; i++) {
sum += Math.random()
}
}
// 将计算的结果传递出去
postMessage(sum);
}
Web Worker的通信时长
并不是执行时间超过50ms的任务,就可以使用Web Worker,还要先考虑通信时长的问题。假如一个运算执行时长为100ms,但是通信时长为300ms,用了Web Worker可能会更慢。
比如新建一个web worker, 浏览器会加载对应的worker.js资源,下图中的Time是这个资源的通信时长(也叫加载时长)。
当任务的运算时长 - 通信时长 > 50ms,推荐使用Web Worker。
热门推荐
霍纳综合征四大症状及处理方法
Horner综合征是什么意思
奶茶的咖啡因含量比咖啡还高!难怪一喝就失眠、心慌……
专业指导:翡翠打孔失误后的位置调整 与技巧
充电时手机发热?一篇文章教你如何安全降温!
四川绵阳北川五大特色小吃:从九大碗到桂花百合羹
李隆基一日杀三子的历史谜团与深层原因
李隆基一日杀三子的历史谜团与深层原因
什么是斋月?穆斯林如何遵守伊斯兰教的圣月?
掌握粤语的实用技巧与学习方法分享
长江委水文局:科技创新赋能水文现代化建设
向新向智,南京新能源汽车“加速跑”
火灾应急处理指南:如何正确报火警与自救措施解析
卫星通信天线系统全解析:高增益、小体积与自动跟踪的奥秘
邗怎么读,邗字的意思,“邗沟”是什么?
"邗"字:从春秋古运河到现代地名
揭秘大麦茶与普通茶叶的五大差异:成分、口感、功效全解析
戒指尺寸怎么测量教程 戒指尺寸测量方法大全2025
天水市博物馆:8000年文明史的见证
锂材料价格上涨 赣锋/天齐上半年业绩大超预期
年轻人的新玩法:一场说走就走的"盲盒式旅游"
买st股票存在哪些风险?如何降低这些风险?
角山长城:巍峨险峻育静美
高铁这么快为啥没安全带?除了乒乓球还有啥不能带
怎样做深蹲才能练到臀部肌肉
针对流浪猫的“TNR”方案启动!首批7只猫被成功抓捕
氨氯地平和依那普利有什么区别 两款药哪个效果好副作用小?
为什么医生建议把氨氯地平换成硝苯地平?看完涨知识了
十二生肖“三灾年”详解:哪些年份需要注意?
维护长期关系:结婚后男人应该懂得承担责任