在Node.js中管理时间的最佳方法是什么?

时间:2012-10-09 16:42:30

标签: node.js timer

哪种方式可以管理时间和实时事件?

我正在用Node.js实现一个小型多人RPG游戏。 我有很多NPC,每隔3或4秒移动一次,所以我需要更新它们。

解决方案A: 每个NPC使用一个setTimeout。如果我有数百个NPC,我会创建定时器。 它更简单但效率不高?

解决方案B: 为所有NPC使用一个setTimeout。每次,我们通过计算NPC移动前最小的剩余时间来调用下一个超时。 所以我们必须使用更复杂的代码,但我们只有一个setTimeout

它有更好的/其他方式吗?

1 个答案:

答案 0 :(得分:0)

正如相关问题所说,setTimeout便宜。但是,它不是免费的。

您可以使用与memcached类似的方式使用单个setTimeout。它有一个大阵列。每秒,它会检查此数组的第一项(或最后一项),并查看是否需要执行某些操作。如果有的话,那就是它。然后,它删除该项目。冲洗并重复。

这是实施背后的基本思想。通过考虑空桶或类似的东西,你可能会获得更好的性能,但是一个简单的实现应该已经非常高效。