在web工作者javascript文件中迭代100000个索引的数组会冻结浏览器

Iterating array of 100000 indexes in web worker javascript file freezes the browser

本文关键字:索引 数组 浏览器 冻结 100000个 迭代 工作者 web javascript 文件      更新时间:2023-09-26

网络工作者

HTML文件

<p> clicking web worker will iterate through 100000 indexes of array
</p>
<input type="button" onclick="startWorker()" value="web worker">
<input type="button" id="btn" value="click to display hello">
<div id="contents"></div>

脚本

function startWorker()
{
   var worker = new Worker('bigloop.js');
        worker.onmessage = function (event) {
        alert(event.data);
            worker.terminate();
        };
}
$(function()
{
  $('#btn').click(
    function()
    {
      $('<p>hello</p>').appendTo('#contents');
    }
  );
})

bigloop.js

var i;
var array=new Array();
for(i=0;i<100000;i++)
{
  array.push(i);
}
var n=array.length;
for ( i = 0; i <n; i += 1){
   console.log(array[i]);
}
postMessage("completed successfully. .");

当我点击web worker按钮时,它会冻结浏览器,直到循环在bigloop.js中执行为止。

  • ?网络工作者有什么用

我敢打赌,当你去掉console.log行时,情况会有所不同。随着时间的推移,我注意到了一件事:例如,当DEV工具打开时,页面加载要慢得多。尝试不记录,看看会发生什么。