在JavaScript中循环一个巨大的数组

我得到这个供应商的响应,那里有一个巨大的arrays。

我只需要遍历这个数组并做一些简单的计算,但是处理起来需要很长的时间。

用JavaScript做这个最好的做法是什么?

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

或者你可以使用本地方法: 在Javascript中执行后台任务

做大量计算的最好方法是启动一个WebWorker。 请记住,将大对象传递给worker是很慢的,所以你可能想在worker中得到响应(比如启动一个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(); }); }