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招教孩子分辨朋友、应对同辈压力
为雍正正名的《大义觉迷录》:内容劲爆有趣,为何会被乾隆所禁?
物联网(IoT)关键技术介绍
一文揭秘:PhysX选择显卡还是CPU?
福建舰完成首次航行试验任务 航母为什么要发展核动力?
艺评|姜冰冰:悬疑外衣下的多元叙事——评电影《唐探 1900》
有氧运动联合正念训练对老年认知障碍患者认知功能的影响
电脑battery3cell电脑电池容量怎么样
上海申花五优势铸就夺冠决心,两短板需警惕以防功亏一篑
嘴巴烫到别慌张,教你正确应急处理方法
地理 | 四有四忌”巧妙应对高考地理选择题
日本各个时代服饰:从传统到现代的演变
如何计算退休工资并规划养老生活?退休工资的计算依据是什么?
灵活就业人员社保缴费有哪些优惠政策?
地球上最值得欣赏的风景?20个神奇自然景观,每个都让你惊叹
智慧体育,用“数据+”打造体育强国的重要组成部分
五种常见护甲类型,实战中的防御能力分析
重庆网红餐饮店设计理念:空间、文化与互动的完美融合
曾国藩家训:四条智慧,成就非凡人生
液压泵故障的主要因素及应对措施
“我还记得你”:山东淄博雪宫街道老年人认知障碍干预项目案例
常见三种存储方式NAS、SAN、DAS的特点以及应用
线型感温火灾探测器的应用与选择
渔樵问答——古琴曲中的人生哲学与田园诗意的深度解读
征信不好可以过户办按揭房子吗?房产过户全攻略
探索虚拟现实:揭秘现实与虚拟世界的法律界限
声音沙哑怎么办?保护喉咙7大心法与8种润喉食物推荐
新媒体内容的表现形式有哪些
胰腺癌晚期剩余的时光,如何携手共度?
诚信手抄报有哪些?创意主题大揭秘