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。
热门推荐
探寻血型与输血的奥秘
【公益培训】龙岗区启动智能制造技能培训,助力产业升级
2024年德州学院录取分数线是多少?全国各省最低分是325
用水性漆不会避开环保部门查,但需注意施工细节
吃米饭,最好不要配土豆
2025年,中国人形机器人产业的优势与短板都有哪些
广电网络和联通网络哪个好?
2025广州大学保研申请与选拔考核程序详解!含奖助政策
数读 | 仍有一成小区房价较高点跌幅低于10%
期刊论文查重要求详解:从查重率到版权规范
为什么喝铁观音能减肥?每天喝铁观音真的能瘦吗?
Miracast投屏-如何让电脑支持Miracast投屏功能?
睡眠管理培训:提升健康睡眠的全方位指南
外交官岗位的内容与重要性
西北师范大学哲学学院:运用"近思·笃行"方法 诠释传承中华传统文化经典
父亲欠债儿女有没有偿还义务
深海钓鱼技巧——挑战三十多米的海底宝藏(解锁深海钓鱼秘籍)
周杰伦音乐元素融入游戏,冒险旅程充满艺术与情感深度
香港买房税务指南:差饷、地租、地税差异大揭秘!
心悸来袭,别慌!一文搞懂原因、挂号与注意事项
合议庭是如何构成的
在纷扰世界中,如何辨别真心与虚伪
酒店床单弄脏了需要赔偿吗
父子关系:探究人类家庭中的一种特殊关联关系
拔罐后皮肤变黑紫?这几种情况要当心
项目编号管理规则有哪些
O型腿的成因与解决方案:从遗传到生活习惯的全面解析
家长,你会正确回应孩子的情感需要吗?
AI人工智能 从感知到理解-融合语言模型的多模态大模型研究
种养循环提高资源利用率,实现环境可持续发展