Javascript无限循环来更新实体

我正在编写一个JavaScript的游戏,并在世界/地图服务的服务器上,我还需要添加一个命令,更新所有的实体。

让我们说一个实体/怪物正在移动,这意味着一个不断的更新被发送到所有连接的客户端。

如果我做了类似的事情

while(true) sendToAllConnectedClientsNearToThisMonster(data) items.forEach checkIfItemHasNotExpiredYet(item) deleteItemFromWorldIfExpired() 

但是与此同时,同样的服务正在做其他的事情,比如处理进出的数据包。 encryption解密数据包。 路由包,转发聊天包到聊天服务器等。

这不会阻止我的node.js服务器? 处理这些任务的正确方法是什么?

使用setInterval ,它每X(本例中为250)毫秒执行你的函数。 这样你就不会阻塞你的服务器。 由于node.js是单线程的,你应该总是遵循轮stream的规则:永远不要等待。 从不阻止。 并完成快!

这是你的伪代码包装在setInterval中:

 setInterval( function() { sendToAllConnectedClientsNearToThisMonster(data) items.forEach checkIfItemHasNotExpiredYet(item) deleteItemFromWorldIfExpired() }, 250); 

http://nodejs.org/api/timers.html#timers_setinterval_callback_delay_arg