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。
热门推荐
腌制萝卜干的关键步骤,提升口感并延长保存时间。
学术会议旁听指南:从选择到总结的全流程指导
MySQL 字段为 NULL 的5大坑,99%人踩过
减肥期间怎么吃水果不会胖?
搭建“黄金救援链”!“海上救援+多学科协作”成功救治两名危重伤渔民
安乐死在中国:合法还是犯法?
是否只做单一运动会拉慢减肥的速度
服务器带宽、内存和CPU如何影响性能?
备孕前必查的四项血液检测
签了三方协议,试用期可以随时辞职吗?
天干地支相克命格:天干相克地支相合的利弊分析
如何调节负面情绪?5个实用方法助你摆脱情绪困扰
如何判断小区的环境质量?小区的绿化情况如何?
无麸质大米粉馒头
藕粉对尿酸有影响吗
GPA计算标准详解及常见问题解答
什么是价格透明
八字天干与地支:四柱八字的基础与应用
上证A股指数最新动态与投资策略分析
效率革命:物流运输中搬运装卸技术的创新与突破
猫咪不同的声音代表不同的情绪,你能听懂多少?
杜仲是常绿还是落叶?主要分布与用途全解析
重要信号!看央行报告10大核心信息
种植牙与镶牙有何区别?护理知识一并了解!
专家解答:颈部淋巴结穿刺活检是否会导致肿瘤转移
如何成为AI算法工程师?
现在粤厨离开特氟龙就不会做菜了?平底锅到底能不能做出传统味?
幼儿的情绪发展变化性是怎样的
房屋出租中的租房合同风险及如何规避?
房屋租赁合同法律要点全解析