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。
热门推荐
骑乘摩托车返乡朋友请注意:福建省禁止摩托车上高速!
告别懦弱:提升自信的七大实用建议
职场“蠢人设”走红,折射年轻人反精英心态
企业高管的真伪之辨:实力为王,形式主义必淘汰
在家也能种灵芝:赤芝紫芝种植技术与管理要点
赤点鲜萃灵芝:25%灵芝三萜含量,创新工艺获市场认可
灵芝入“药食同源”名录,科学解读其保健功效与使用禁忌
十招解决菜籽油炸制泡沫问题
选购菜籽油全攻略:5大指标助你慧眼识油
菜籽油起泡因精炼不足,四种方法教你轻松应对
触摸屏的触摸屏幕亮度均匀性
如何合理设置手机屏幕以提升使用体验和保护视力的技巧分享
触摸屏的触摸屏幕色彩校准
《原神》4.8绘想游迹通关方法详解
《原神》4.8绘想游迹通关方法详解
《原神》4.8绘想游迹通关方法详解
山东人对豆橛子又爱又恨:一年180万吨产量吃不完
白鹇:广东特有省鸟,栖息于南方山地森林
白芨种植指南:喜阴湿环境,春秋各施一次肥
红烧肉、盆菜、饺子:各地年夜饭里的团圆味道
40度水温泡15分钟,专家解析泡脚的三大健康益处
洛天依全息演唱会登陆上海,电声乐队伴奏展现虚拟偶像新高度
洛天依演绎《戏游九州》,传统戏曲牵手虚拟歌手破圈
41名棋手被罚,象棋界的“地震”与反思
计算机科学与技术:2025年最火专业,你准备好了吗?
2024年最火大学专业排行榜:法学登顶,计算机科学紧随其后
财经专业就业前景哪家强?六大维度全面解析
摩托车高速行驶的注意事项是什么?这些注意事项的安全性如何?
北方人初一早餐不讲究:六种家常美食各有讲究
璃月神话生物大揭秘:钟离、魈背后的故事