JavaScript和UI响应中的长时间循环

时间:2014-10-14 12:32:10

标签: javascript loops firefox recursion browser

我有一个代码处理一个巨大的JSON数组,用于" for"环。

for(var i = 0; item = arr[i]; i++) {
   //PROCESS item
}

问题出在Firefox浏览器上。它显示一个警告对话框,脚本运行时间过长。以下代码是解决方案

//not precise code example, but it's kind of.
delay(arr, 0);

function delay(arr, num) {
   //process array by parts with 50 elements in each part
   for(var i = 1; i <= 50; i++) { 
      //PROCESS arr[num];
      num += i;
   }
   if(num < arr.length) {
      setTimeout(function() { delay(arr, num); }, 100);
   }
}

我想知道是否有更好的方法来解决完整的UI冻结并让Firefox不显示脚本调试对话框。请指教。感谢

2 个答案:

答案 0 :(得分:2)

如果您使用的是Firefox,那么您可能正在寻找web workers,它允许您生成后台线程。

答案 1 :(得分:1)

我认为网络工作者就是你所需要的。

在这里,您可以找到对网络工作者的一个很好的介绍:link