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。
热门推荐
被裁员的赔偿金怎么算?N+1和2N标准全解析
对比“以前的爸爸”和“现在的爸爸”,看社会变迁影响父爱表达
DeepFlow技术深度解析:未来网络流量管理新趋势
「先醫後美」才安心! 皮膚專科醫師解密黑斑診斷與治療
睡不醒?睁不开眼睛?眼无力、无神?警惕这种疾病-上睑下垂
千万别学电气自动化技术专业?此专业的优势劣势优缺点!
芝麻油的功效与作用 芝麻油怎么挑选
古城风貌在 活力胜往昔!云南会泽不断探索文旅新业态
八字喜用金水姓名-五行中属金水的名字组合
一文详细解析国债类型、购买方法及收益率计算指南
龙息神寂传说英雄培养全攻略:三大核心英雄深度解析与实战技巧
YOLO模型train.py文件训练参数详解
提高声音可能性的初步方法
戒烟新招:手机App加护理人员暖心关怀,助犹豫者摆脱烟瘾
中医经络辨证:十二经络虚实特征全解析
每日辟谣 | 晒太阳会让头发变白吗?
405亿市值欧菲光再启重组:上市近15年四度资本运作,能否借整合突围?
财务状况分析是什么?如何进行有效的财务分析?
2025年最火行业!无人机飞手月入过万,低空经济成普通人逆袭新机会
咖啡烘焙焦糖化反应的科学与艺术探秘
关税“组合拳”下果链概念股影响最大 高伟电子跌超26%
如何准确展示自身能力?
电压击穿与电气强度:原理、参数及应用
关羽:一代名将的辉煌与性格弱点
MATLAB傅里叶级数和周期数据分析教程
SEO全攻略:提升百度、微博、咸鱼等平台搜索排名的实用技巧
烫伤了千万不能涂酱油,也不能涂牙膏!正确的做法是...
IP代理服务器如何判断代理已经连通?
数据分析全过程详解:如何明确目标、收集并清洗数据、分析解读及后续行动?
五险一金:从根本上保障你的生活,为什么你一定要交?