限制NodeJS setImmediate

我试图在我的NodeJS环境中执行每秒30次(基于一个固定的variables)的循环。 我已经被告知setIntervalsetTimeout并不是以setImmediateforms作为process.nextTicksetImmediate可用于遵从setImmediate中的I / O队列。 我试过使用下面的代码( setImmediate ):

 var Physics = { lastTime: (new Date().getTime()), upsCounter: 0, ups: 0, init: function() { Physics.loop(); }, loop: function() { var currentTime = (new Date().getTime()); Physics.upsCounter += 1; if((currentTime - Physics.lastTime) >= 1000) { Physics.ups = Physics.upsCounter; Physics.upsCounter = 0; Physics.lastTime = currentTime; console.log('UPS: ' + Physics.getUPS()); } setImmediate(Physics.loop); }, getUPS: function() { return this.ups; } }; 

我的问题是,每秒更新(UPS)超过400,000,而不是所需的30,我想知道是否有任何方法限制到这个数字,或一个替代的循环结构。 谢谢

我已经被告知,setInterval和setTimeout不是用NodeJS的方式

当然,他们是当你需要超时或间隔!

setImmediate / nextTick直接的 ,这不是你想要的。 你不能限制他们,他们尽可能快的devise。

如果setInterval不够精确或漂移,那么使用自我调整计时器 。

你应该继续使用setIntervalsetTimeout方法,但是确保取消它们,这样它们不会阻塞否则会退出的进程,除非该计时器是程序的主要执行。

请参阅: 节点计时器API文档

javascript var t = setInterval(myMethod, 100); t.unref(); //the timer t will not execute if the rest of the program is ready to exit.