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。
热门推荐
心学问心理教育,网络安全:保护孩子免受网络伤害
佛曰:世间万物,皆因缘际会
春日樱花拍照指南:从光线到构图,这样拍出绝美樱花照
equipment可数吗?高中英语知识点解答
科学健身计划指南:增强肌肉力量的有效步骤和方法
癌细胞最喜欢吃的早餐,包子馒头无一幸免?4种早餐才真的要少吃
角磨机操作规程注意事项(13篇)
从VCD到DVD:中国科技产业的觉醒之路
洲际导弹:威慑力背后的战争与和平密码
磨豆机的好坏是决定咖啡品质的重要因素-手动与电动之区别
诱发近视的因素有哪些?眼镜能不能摘摘戴戴?
建设用地使用权年限及续期规定
土地使用年限一般多少年:影响因素及计算方法
十大好吃的羊腿做法分享 家常羊腿肉怎么做好吃
减肥后是否可能导致面部下垂
晚餐吃什么健康又营养好睡眠呢
睡前喝水十大忌是真的吗
孕中期怎么补,来听听闵行营养师的建议→
尾盘突变!中国资产,集体拉升!
云盘转存秘籍:4种方法让你轻松搞定大文件上传
面对AI普通人该如何把握机会
夜晚的透气密码:睡觉时窗户留缝大揭秘
区块链怎么管理农业项目
带牙套的流程是怎么样的?术前/术后注意的及优缺点这里全都有
补锌过量的坏处是什么
右佐匹克隆片3毫克能睡多久
劳动法关于工资发放时间的规定
《往生咒》原文+注音+唱诵
怎么向医院申请调取病历
陕甘宁土地政策:助力革命根据地建设与农村发展