Node.js中的中断繁忙循环
Interrupt busy loop in Node.js
我的Node.js代码中有一个简单的繁忙循环,结果需要几秒钟才能完成。在这段时间里,我需要执行一些I/O操作,这些操作目前都在队列中,并且都在循环之后执行,而不是与循环"并行"。我知道Node不做并行执行,所以我正在寻找一些方法来中断循环,让Node做其他事情。
我尝试过用async实现循环,但这导致了超过调用堆栈(I很容易达到2000000)。
while(i < length){
if(something) sendWebSocketMessage();
//Do stuff with i
i++;
}
有什么想法吗?
一个解决方案可以是这样写循环:
(function step(){
doSomething();
if (length--) setImmediate(step);
})();
通过这种方式可以处理介于两者之间的其他事件。如果您的循环因为大量迭代而很长(而不是因为长步骤),那么您可以使用部分循环来代替doSomething()
。
如果你想放慢循环的速度,为了让更多的时间用于其他任务,你也可以使用具有非空超时的setTimeout
:
(function step(){
doSomething();
if (length--) setTimeout(step, 5);
})();
相关文章:
- 中断javascript循环
- 当使用return语句时,循环不会中断
- Javascript数组推送中断循环
- 为什么内部Javascript循环会阻止外部循环中断(即无限循环)
- Javascript代码中断循环
- 在循环顶部中断循环的显式条件
- 完成ajax调用数组的循环,而不是在某个调用出错时中断
- Node.js中的中断繁忙循环
- 数据角色中断”;对于循环'为什么?
- 从匿名函数中中断for循环
- 循环不应在遇到无效语句时中断
- 如何在返回值(Js)时不中断函数/循环
- 角度:如何从外循环从内循环中断
- 如何在中断之前遍历此 for 循环中的所有城市?现在它只是迭代一个
- 中断语句仅删除第二个循环
- JavaScript 在循环输入后中断
- 在 for 循环中断中的 JavaScript 切换;冲突
- 从外循环中断,同时循环通过内循环
- 从嵌套循环中断:SyntaxError:找不到标签
- 当遇到不存在的图像时,For循环中断