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。
热门推荐
黄芪治疗糖尿病肾病:从机制到临床应用
黄芪养肾新姿势:专家推荐的科学使用方法
兰州黄芪:从田间到药房的产业传奇
儿童友好“公园+”理念,让父母与孩子共度亲子时光
成交量金叉的市场意义与投资决策作用
《哪吒2之魔童闹海》票房逆跌封神!国漫IP如何改写市场铁律?
企业法律知识讲解培训:构建企业合规基石
如何建立中小企业的健全风险管理体系?
哪些岗位的公务员上班时间最灵活?
伤残津贴和一次性伤残补助金的区别
人身保险伤残评定标准与赔偿金额计算:全方位解析
自动驾驶迎重大政策利好,11只概念股获公募+社保共同持有
汉朝时期太守是什么官职?有多大的权利?
汉朝时期太守是什么官职?有多大的权利?
山东省高校毕业生信息就业网的招聘流程是什么样的?
2025年山东省春风行动在新区启动,招聘会上超两万个岗位吸引众多求职者
《XX》票房被曝造假?影院回应来了!
六院科普:老年肠癌患者术后康复训练怎么做?
每天一杯山楂泡水,会有什么样的好处?或能改善6种问题
深度学习在人工智能中的作用
口腔科常见十大疾病
后槽牙根出血的治疗方法:从原因分析到预防措施
高血压患者降压药服用全攻略
工伤认定标准及赔偿是什么
《八佰》《流浪地球》票房大爆,明星效应功不可没?
经济越差,票房越好?揭秘美国大萧条时期的电影业奇迹
结直肠癌术后如何预防复发?这四个指标需重点关注
9 个抗癌食品秘诀
甲硝唑片的注意事项与禁忌症
三角梅花期多长时间(了解三角梅的生长过程和开花时间)