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。
热门推荐
古诗词中衍生出的成语及其文化内涵
《斗破苍穹》动漫热度持续下滑:观众失望、剧情崩坏与数据压力!
鼻烟壶探秘:起源、工艺与市场价值
北辰区小淀镇小贺庄村:小雪节气手作茶会 传承非遗文化
47岁赵薇:从"中国巨星"到"查无此人",终于落到如今下场
应避免的 10 个不健康习惯以及如何根除它们
《月儿高》——古筝名曲的意境与技巧赏析
宇宙大爆炸瞬间产生的纯能量,到底是如何转化为物质的?
中国游戏版号简史
“多巴胺”“美拉德”,穿搭色系竟能调节你的心情?
高考英语成绩提高策略
应届生如何融入公司团队?这份职场新人指南请收好
少林功夫的起源和发展历史
手把手教你用AI绘画工具SD制作三种不同材质的毛绒玩具
小细胞肺癌,国内外治疗方案大比拼(2025.2版)
春日限定|6款高颜值创意饮品配方,把浪漫春天装进杯子里
理解文化背景在中文到英文翻译中的关键作用
日本人打招呼:礼仪、场合与回应指南
日语问候语“こんばんは”的使用场景与文化解析详解
蓝牙忽略此设备后怎么恢复正常 蓝牙忽略此设备重新连接方法
如何有效监控和管理CPU温度,保障计算机性能与安全
中国古典文化中的鸳鸯象征意义解析
杨枝甘露有没有茶底?教你在家做出港式茶楼的品味
粤韵甘露,杨枝甘露的清凉之舞:诱人糖水之旅
艾司奥美拉唑镁碳酸氢钠一旦吃了就不能停吗?并非一吃到底
悲歌壮怀,淞沪会战国军齐赴上海,以下省参战部队几乎全部战死
眼镜验光师怎么报考?2024最新最全报名流程和条件是!证书用途,考试内容
Steam游戏启动慢怎么办?全方位诊断与优化指南
四个月宝宝发育标准:从体重到社交行为的全面指南
看看晚清时期的“童养媳”,处境有多悲惨