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。
热门推荐
赵合德:汉代宫廷权谋的绝世佳人
汉成帝与赵合德:爱恨交织的传奇
揭秘赵合德受宠秘籍:汉成帝也难逃美人计?
先进复合材料在军事装备上的应用——枪械·弹药篇
为什么会耳鸣
【科普】医生说的“忌辛辣”,就是不吃辣椒吗?真相是→
香港警察的粤语称呼大揭秘!
香港警察称呼里的英伦风情:从“阿Sir”到“督察”的百年传承
香港警察的那些神秘称呼,你知道几个?
公众人物如何正确称呼香港警察:从“阿Sir”说起
Charlesworth研究:科研人员如何通过心态调节提升科研能力
从兴趣到实践:一位博士生的科研成长之路
高校如何培养高科研能力的创新人才?
AI时代,科研能力培养如何破局?
元宵节的传说:汉文帝平吕之乱
元宵节穿越到摩登上海!
心脏支架能用多久?得看这4大影响因素!
胶州湾跨海大桥:全球最长跨海大桥摄影指南
冬日打卡:泰山、曲阜、青岛,你最想去哪?
傅善祥:中国首位女状元的传奇与悲剧结局
太平天国唯一女状元:18岁丧夫,才貌双全却红颜薄命
黄品源再唱《小薇》引万人合唱:青春虽逝,经典永存
《小薇》:一首歌背后的爱情故事
《母仪天下》郭珍霓版赵合德:妖妃的完美诠释!
揭秘汉成帝宠妃赵合德:从平民到昭仪的宫廷传奇
天津欢乐谷必打卡:峡湾飞龙惊险体验
2024天津欢乐谷POGO电音节:夏日狂欢背后的喜与忧
天津欢乐谷亲子游新玩法:小黄鸭大漂流、超级英雄巡游等你来!
技术分析最基本的单元——K线
从“豪气”到“务实”:互联网公司年会背后的企业文化变迁