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

Long-running loops in JavaScript and UI responsiveness

本文关键字:长时间 运行 循环 UI 响应 JavaScript      更新时间:2023-09-26

我有一段代码在"for"循环中处理一个巨大的JSON数组。

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不显示脚本调试对话框。请告知。感谢

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

我认为web工作者正是您所需要的。

在这里,您可以找到一个很好的web工作者介绍:链接