我收到了来自这个提供商的回复,其中有一个巨大的深度阵列。
我只需循环遍历此数组并进行一些简单的计算,但处理时间很长。
使用JavaScript执行此操作的最佳做法是什么?
答案 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();
});
}