通过JavaScript中的大型数组循环

时间:2015-12-09 02:21:32

标签: javascript arrays node.js

我收到了来自这个提供商的回复,其中有一个巨大的深度阵列。

我只需循环遍历此数组并进行一些简单的计算,但处理时间很长。

使用JavaScript执行此操作的最佳做​​法是什么?

2 个答案:

答案 0 :(得分:0)

如果您在现代浏览器中使用HTML5,则可以使用WebWorkers:http://ejohn.org/blog/web-workers/

或者您可以使用自己开发的方法:Execute Background Task In Javascript

答案 1 :(得分:0)

执行繁重计算的最佳方法是启动WebWorker。请记住,将大对象传输给工作人员的速度很慢,因此您可能希望在工作程序本身中获得响应(如启动ajax)。

如果您遇到一个线程,可以使用以下方法将计算拆分为较小的部分,但如果单个迭代时间过长,则无法帮助您。

function eachAsync(array, fn) {
  return new Promise(function(resolve, reject) {
    var index = 0;
    function chunk() {
      try {
        var end = performance.now() + 20;
        for(;;) {
          if (index < array.length) {
            var current = index++;
            fn(array[current], current);
          } else {
            resolve();
            break;
          }
          if (performance.now() >= end) {
            schedule();
            break;
          }
        }
      } catch(e) {
        reject(e);
      }
    }
    function schedule() {
      setTimeout(chunk, 10);
    }
    schedule();
  });
}