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。
热门推荐
鱼油的功效与选择指南:从EPA到DHA,专业医师详解鱼油的正确摄取方式
五组证据只有一组被反驳:揭示论点辩论中的说服力
申请正常毕业:轻松实现学业目标
木地板防潮垫材质及其使用方法介绍
震荡偏弱的市场状况如何应对?这种状况对投资者有哪些启示?
戊戌变法究竟触动了谁的利益?为什么慈禧太后先赞成后又反对变法
孩子频繁“抠手”疑是患上了心理相关的疾病,家长应该怎么办?
胡子长得慢是什么原因
资本市场 | 上市公司整体业绩有所改善 主板预喜率近35%
“朋友圈”极速扩容……内蒙古多场景接入DeepSeek!
科技把神话变成现实 “国家队”集体下场认领哪吒“法宝”
买插电混动车需谨慎!最新保值率排名:宋Pro DM-i第3,唐DM-i第6
中国行政区划代码及五级行政区划体系详解
二次元文化:年轻人心灵归属与虚拟世界的魅力探讨
如何解决多维力传感器中的维间干扰问题?
失去绝对控制权,王健林妥协了
软件项目资源分配技巧 5个重点
盲肠炎的10个征兆是什么
盲肠炎怎么检查
脑血栓急性期治疗全攻略:从药物到康复的系统方案
维生素C的作用太强大了,我看谁还不知道
吃完香瓜后舌头发麻?原因及缓解方法全解析
怎样查肠道有没有问题
夏天急性腹泻高发,做好预防和护理
电化学高级氧化技术处理难降解有机废水
Excel多个工作簿合并方法详解:从手动复制到Power Query
爸妈吵架对孩子影响深远!如何降低父母吵架对孩子心理的影响?
10项户外活动让您的生活充满活力
《红楼梦》:刘姥姥的风趣幽默,让人读了泪流满面!
五行八卦与数字的神秘联系