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。
热门推荐
吡罗昔康贴片使用说明
燃油车优势深度解析:2025 年为何仍具不可替代性?
廉价Wi-Fi解决方案,真的靠谱吗?
卖保险的提成计算方式和影响因素有哪些?如何合理看待保险提成问题?
做面包用这个方法绝对让你事半功倍
用C语言编程表白:从心形图案到文字动画
如何处理滑丝问题?滑丝问题的解决方法有哪些?
逆变器设计的原理与技术要点:电力电子技术中的核心知识
大众ID.3保养全攻略:六大关键项目详解
脾胃"小情绪",你读懂了吗?
数字经济下表见代理成立要件的司法审查
【图解秒杀系列】秒杀技术点——多级缓存、分层过滤
OLED屏幕为何成为游戏玩家新宠:画质优异、响应迅速、护眼健康
怎样检查银行卡是否被冻结?
解决学生上课爱睡觉问题的有效办法(培养学生学习积极性和改善学习环境)
代位求偿的条件:全面解析与法律适用
如何跟团队沟通倾听
龙场悟道——王阳明心学的诞生
总有一款适合你的小宝贝 精选可爱猫咪名字100个 从优雅到俏皮
机场酒店规划的便捷舒适之道
工资个人所得税如何通过费用扣除来减少
壮族牛魂节:敬牛爱牛,祈愿五谷丰登
广西河池:游客“奔县”共庆壮族蚂拐节
过期药的危害原来那么大!正确处理方式来了
这场致39人死亡的悲剧是如何发生的?视频还原事发经过→
这场致39人死亡的悲剧是如何发生的?视频还原事发经过→
肚皮舞:舞者与音乐的完美配合
Excel数据验证:如何输入公式
银行账户资金监管账户的注销流程是怎样的?
球形闪电怎么形成