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。
热门推荐
如何强化小初衔接促进整体育人
自己装修和请装修公司有什么区别?业主必懂的13条装修利弊
香港公司税务申报全流程详解
男演员演技很重要!看到《黄雀》里的小配角,才知何为"剧抛脸"
静态IP和固定IP一样吗?静态IP是不是固定IP
百年科学蛔虫宴
加拿大雷湾市:苏必利尔湖畔的交通枢纽与工业重镇
【以案释法】土地经营权流转中合同效力与合同僵局的认定
跑得更聪明,而不是更努力:破解跑步者膝盖疼痛的密码
如何在与下级的沟通中建立开放的交流环境?
入职体检感冒了跟医生讲一下
儿童手心出汗看什么科检查
询问笔录七要素,一个都不能少
乾隆皇帝的养生秘笈
月球激光测距
拔罐的历史起源
数学到底在哪里支撑着编程
工作半年以上被辞退赔偿标准及试用期辞退补偿规定
Faker直播带货引发外服热议,感慨国服玩家购买力惊人
维修基金的使用条件与管理流程详解
为什么维生素补充过量,反而会致癌?
i5处理器配置指南:选择和优化的关键要点
什麼是碳水化合物?好壞醣類這樣吃才健康
留学生如何验证GPT所给文献的真实性?
10 种可自然改善视力的蔬菜
俄罗斯——无名烈士墓
温州大学胡悦团队Small:播种盐催化剂制备无污染单壁碳纳米管阵列
离职三年后,还可以找原单位补缴社保吗?
车灯技术小课堂 | 车灯法规体系简介
没有免赔额的住院医疗险怎么报销