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。
热门推荐
什么是滤镜?它与滤光片之间有哪些联系?
婺源油菜花三大观赏景区:月亮湾、江岭、庆源
多批次酱油查出黄曲霉素?提醒:这3种酱油别再吃了!
研发团队跨部门协作的最佳实践
高铁退票手续费标准及退款到账时间详解
坟、墓、陵、寝傻傻分不清?一文告诉你它们有什么区别!
江阴必去三大景点有哪些?重走科举之路,感受古代考试文化的魅力
沙苑子的副作用与禁忌
“双人出游体重300斤以下享门票半价”?回应来了
什么是“比劫男命”八字中的特殊命理解析
AI破解高速公路长隧道群管理难题
以对方财产保全申请不当为由请求损失赔偿,法院如何认定?
深圳海域发生球形棕囊藻赤潮,官方建议减少亲水活动
易学文化考试网:易经中的阴阳理论如何解释自然规律?
从一道高考题谈起:微积分入门的关键一步
全球变暖已逼近1.5℃的升温极限
让乡亲们就地过上现代文明生活(推进乡村全面振兴不断取得新成效)
《离骚》中"泽"字注释的探析
仲裁协议的独立性如何规定的
35岁以上高脂血症患病率高达34.7%,远离3类危险因素,定期筛查
2025相约武汉赏樱又有新玩法 四大系列百余项活动等您来体验
玩转3月樱花!武汉221处赏樱点全攻略
全球公认耐用车型大揭秘,开到报废都不是事儿
财信研究评美联储3月议息会议:最早或于6月重启降息,通胀预期回落是前提
绝对零度:物理学中的最低温度
绝对零度零下273.15度到底有多可怕?一切都会被冻结,包括光!
如何构建有效的项目绩效评价指标体系?
窦性心律P波增宽需不需要治疗
心电图P波增宽是什么?可能提示这些心脏问题
镶牙后如何保持牙齿的清洁呢?