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。
热门推荐
燕窝抗老数据分析:燕窝抗衰老功效及有效成分揭秘
夏季日均22℃的东北,跑出一个避暑旅游大省?
黑龙江省2024年夏季旅游推介会走进南宁
就业补助金的申请流程怎么样?
吃辣被辣得“上头”,教你几招快速恢复清爽
口蘑里面黑色能吃吗
2025报考国防科技大学需要符合哪些条件 多少分能考上
工伤掌骨骨折左手赔偿指南
LOL阿卡丽技能详解与实战技巧分享
调节情绪的四个方法
海参泡发全攻略:三种方法详解,新手也能一次成功
红警防守七个冷酷敌兵的策略是什么?
医保账户的钱,能共济给家人用?
石材铺装后如何断裂修复及防裂小技巧
【加薪谈判】10个技巧让主管同意你的加薪要求
李白《蜀道难》创作背景与艺术特色
靖康之变中的朱皇后:从尊贵皇后到金人俘虏的悲剧人生
如何高情商向领导表达不满,分享3招,既不得罪领导又能达到目的
如何理解家居装饰品的选择与风格搭配的关系?这种关系如何营造独特氛围?
晒后背的好处
辩证法的核心内容与实质
郭守敬:元朝比肩世界的科学巨匠,中国历史上少有的全才型科学家
如何有效进行软件开发项目需求分析?
苦瓜怎么吃降糖效果好
威朗空气滤芯应多久更换一次?
汽车空气滤清器脏了不换的后果是什么?
古代四大残酷的刑法
燃油车回暖与纯电技术升级,插混增程车型面临淘汰危机?
《安娜·卡列尼娜》的“骚动”
山楂热量高不高