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。
热门推荐
揭秘微信运动:手机如何知道你走了多少步?
老厨师教你一招搞定猪大肠清洗:食用油清洗法让异味全跑光!
猪大肠清洗新招:面粉+葱叶搞定异味!
漫谈中华文化瑰宝:那些令人沉醉的经典故事
理大研究揭示:妈妈多吃蔬果,宝宝更健康
耶鲁大学研究证实:母乳喂养增强母婴心理感应
秋冬养生:避开发物,吃这些平性食物!
REM睡眠揭秘:你的梦境有多真实?
REM睡眠:你的心理充电宝
认知行为疗法:治疗REM睡眠障碍的新选择
低密度脂蛋白多久复查一次?专家建议及健康管理全攻略
智能马桶盖水压不够怎么办?家庭水压调节技巧大揭秘
探访百禄桥镇:马栏嘴遗址的秘密
各地春节祭祖习俗介绍
春节特辑 | 同一个春节,不同的习俗:海内外家族都怎样过新年?
开车前别贪嘴!小心荔枝让你“被酒驾”
全球电动车市场现状及未来发展趋势分析
中医解析嗜睡症:从病因到治疗方案
秋冬风湿痛?试试那如-3!
雷雨季如何顺利乘机出发✈️出行指南快来看
麻将高手教你“听一坎”新策略
用对了心态,麻将桌上的“运气”就掌握在你手中
哈佛研究:打麻将真的能延年益寿!
碌鹅:广东客家的非遗美味
冬天吃鹅肉真的能护心吗?
庐山:江西必打卡的人文圣山
江西深度游:从庐山到鄱阳湖的完美行程
汉寿县百禄桥镇:科技赋能乡村振兴的生动实践
百禄桥镇:科技种田引领农业现代化
房屋过户后水电用户名怎么改