JavaScript 多线程处理计算密集型或高延迟的任务时,避免页面卡顿的方法 | 您所在的位置:网站首页 › html页面渲染多线程怎么做 › JavaScript 多线程处理计算密集型或高延迟的任务时,避免页面卡顿的方法 |
JavaScript 多线程处理计算密集型或高延迟的任务时,避免页面卡顿的方法
引言单线程处理大数据演示单线程去重代码动图演示
多线程处理大数据演示多线程去重代码动图演示
总结
引言
前一段时间,写了一个前端去重的博文。在处理千万级的数据时,即使不考虑兼容选用效率最高的方式,也需要几秒钟才能处理完(具体时长主要受数据重复率影响),这样会造成页面卡死的结果。因为JavsScript是单线程处理的,所以在数据未处理完时,后面的任务会等待。今天就来解决一下因任务量过大,造成的页面卡顿如何解决。 单线程处理大数据演示 单线程去重代码 // 创建一个五百万条,重复10%的数据 var arr = Array.from(new Array(5000000), function (item2, i) { return i % 10 if (!newMap.get(arr[i])) { // newMap.has(arr[i]) newMap.set(arr[i], 1); newArray.push(arr[i]); } } return newArray; } // 输出耗时数据函数 function printTime(arr) { console.log(`数据长度:${arr.length}`) console.time("耗时") var newArr = distinct(arr) console.timeEnd("耗时") console.log(`数据重复量:${arr.length - newArr.length}`) } // 执行去重并后续跟随其余代码 printTime(arr) console.log('去重后的代码执行') 动图演示
这里主要演示了在处理计算密集型或高延迟的任务时,如何让页面不卡顿,Worker 的更多使用方法可以去阮老师的教程中学习,也可以去MDN 看Worker API 和上方用到的 Blob,上述去重代码使用的是 这篇博客中Map方法去重,有兴趣的同学可以去看看。 以上如有错误或疏漏请指正,谢谢。 |
CopyRight 2018-2019 实验室设备网 版权所有 |