请检查我对以下for loop
的理解是否正确。
for(let i=0; i<1000; i){
sample_function(i, function(result){});
}
调用for loop
的那一刻,sample_function
中将排队处理event loop
的1000个事件。大约5秒钟后,用户发出一个http请求,该请求在那些“ 1000个事件”之后被排队。
通常,这不是问题,因为循环是异步的。
但是,可以说此sample_function
是CPU密集型功能。因此,“ 1000个事件”是连续完成的,每个过程大约需要1秒钟。
结果,for循环将阻塞大约1000秒。
有没有办法解决这样的问题?例如,是否有可能让线程每10个循环中断一次?并允许其他新查询之间弹出?如果可以,我该怎么办?
答案 0 :(得分:2)
尝试一下:
for(let i=0; i<1000; i++)
{
setTimeout(sample_function, 0, i, function(result){});
}
或
function sample_function(elem, index){..}
var arr = Array(1000);
arr.forEach(sample_function);