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。
热门推荐
“花开时间”精准反映自然生态环境变化,来看繁花背后的青岛“物候密码”
香港保险代理人及经纪公司的选择指南
深入了解美国破产程序:为财务困境提供出路
烟销日出不见人,探索古代诗歌中的隐喻与现代生活启示
这些年轻人种地用上AI,手机“拍一拍”就能给农作物“看病”
成人驼背如何矫正
背景音乐怎么提取出来?四种有效的提取方法
劳动仲裁纠纷案件处理流程与典型案例分析及法律应用探讨
电容和电阻在汽车电子中的应用与趋势分析
通信工程,就业前景与张雪峰视角下的行业分析
为什么内螺纹公差等级为6H;外螺纹为6g?
【必读】常用螺栓上标注的字母与数字的含义你真的理解了吗?
打印机硒鼓详解:工作原理、维护方法与常见问题解决方案
期中季的你,也爱喝咖啡吗?
鱼缸长藻了怎么办?100只黑壳虾的除藻效果展示
考公是"唯一正确的路"吗?
超市蔬菜水果如何保鲜时间长
【麻案精析】时间就是出血风险:接受紧急抗栓治疗患者的硬膜外导管管理
在AI浪潮中脱颖而出:人类独特价值与组织适应策略
河图洛书,为何被称为中国文化之源?
集装箱尺寸
从放牛娃到清华副校长,考研3次,读博7年,薛其坤院士有多牛?
如何用好建设性批评方法提升领导能力?
如何选择适合自己的高性能移动硬盘?从类型、品牌到数据保护全解析
何谓"檀越"
确保防静电设备有效性的关键措施
军嫂的好处与坏处:军事家庭生活的双重挑战
全国事业编报名与考试时间概览:报名流程、考试科目全解析
电动自行车锂电池新国标发布:须标记安全使用年限
未成年人投保时监护人有什么具体规定吗?必须是父母?