节点js非阻塞for循环

node js non blocking for loop

请检查我对以下for loop的理解是否正确。

for(let i=0; i<1000; i){
  sample_function(i, function(result){});
}

调用for loop的那一刻,sample_function的1000个事件将在event loop中被查询。大约 5 秒后,用户发出了一个 http 请求,该请求在那些“1000 个事件”之后被查询。 通常这不会成为问题,因为循环是异步的。 但是可以说这个 sample_function 是一个 CPU 密集函数。因此,“1000 个事件”是连续完成的,每个事件大约需要 1 秒。 因此,for 循环将阻塞大约 1000 秒。

有没有办法解决这样的问题?例如,是否可以让线程每 10 次循环执行一次 "break"?并允许其他新问题出现在两者之间?如果可以,我该怎么做?

试试这个:

 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);