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。
热门推荐
智能外呼与传统外呼对比 优劣分析及成本解读
涂什么颜色指甲油好看?指甲油颜色搭配技巧
什么原因会导致溶血性贫血
电梯停电自救指南:揭秘电梯如何自动返回安全楼层并开门
静脉曲张微创治疗全解析:从传统疗法到CHIVA的革新
成人肥厚性幽门狭窄怎么检查
我爸是王羲之:中国古代家庭教育的经典案例
玩电子游戏可以开发智力
训练自闭症孩子眼神接触能力的六种方法
那些被误认为是莎士比亚名言的句子,以及它们真正的出处
单位根检验及 Stata 具体操作步骤
供应链管理工程师的职业发展前景如何?
窗帘选购全攻略:从种类款式到清洁保养
山西中条山:小众游的宝藏山脉,自然之旅的绝佳选择
各有特色:盘点那些五花八门的悬架系统
邯郸大名|“六尺巷”故事有了大名版
银行的支付清算系统的风险防控体系有哪些?
同样是醋,白醋、米醋、香醋、陈醋有啥区别?明白后别再用错了
MACD指标中的金叉和死叉:多方市场与空方市场的不同应用
申论答题模板讲解:2024年申论备考指南
有个抑郁症哥哥该怎么安慰
非参数检验丨Friedman’s test (多配对样本)
如何培养少年儿童的阅读能力?上海教育业界人士展开探讨
超声波清洗机中使用的酒精类型与应用分析
自强不息的字有哪些?探索汉字中的奋斗力量!
贵州民族大学:一所综合性民族院校的建设与发展
春季时令美食分享,八道“春菜”喜迎春天
绝对值化简的解题技巧 有什么步骤
探寻皇家避暑胜地——承德避暑山庄,享受一场历史与自然的盛宴!
想在水下待得更久?这10个调整空气消耗的小技巧你值得拥有