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。
热门推荐
鱼玄机:唐代才女的诗意人生
鱼玄机:一位唐代女诗人的传奇人生
温庭筠拒绝了她的爱:鱼玄机的悲剧人生
外出旅游必备的五类手机应用程序
邓丽君《我一见你就笑》:跨越时光的经典旋律
猫小乐揭秘《阿衰》创作灵感:从生活观察到漫画经典
跟着丁真探秘甘孜冬季美景
甘孜冬季户外探险指南:保暖装备推荐
海螺沟冰雪温泉:甘孜冬游新宠!
跟着丁真玩转甘孜:冬日旅行全攻略
NPD型巨蟹男的情感操控特征与应对指南
巨蟹座固執嗎?深入解析巨蟹座的性格特點
第26个世界骨质疏松日:女性骨质疏松防治指南
香蕉雪碧为什么不能一起吃
娥皇·女英:中国古代爱情的典范
舜的爱情:娥皇与女英的传说
2024年神工金奖作品《四大美女》赏析
蝴蝶兰常见病虫害及防治技巧大全
外国人写中国故事,一举拿下诺奖,改变世界看待中国的目光!
外国人眼中的中国文化是什么样的?从“他者视角”看中国
亚麻籽改善便秘的作用
拉格纳·洛德布罗克:巴黎围困的幕后大佬
拉格纳之死:《维京传奇》的悲壮落幕
《维京传奇》中的征服与现实:拉格纳攻占巴黎始末
商用保鲜柜和家用冰箱的区别 保鲜柜和冷藏柜的区别
深度了解帕金森病的手术治疗——脑深部电刺激术(DBS)
获批FDA IDE!自适应脑深部刺激DBS
蓝莓种植全攻略:从品种选择到采收的完整指南
女人耳鸣必吃的五类食物总结
耳根长了个硬包是怎么回事