如何在JavaScript中实现一个精确的,跨平台的游戏循环?

我试图在node.js和现代web浏览器上每隔10ms运行一次游戏循环。 Chrome版本运行良好(精度保持在1ms以内):

var nextUpdate = Date.now(); function loop() { console.log(Date.now()); // update() here nextUpdate += 10; // ms setTimeout(loop, Math.max(0, nextUpdate - Date.now())); } loop(); 

但是,在Firefox和node.js中setTimeout的准确性要低得多。 即使0ms的超时也需要比平均10ms的时间更长的时间来执行,这会导致循环完全不同步。

在javascript中实现一个精确的跨平台游戏循环的更好的方法是什么?

现代浏览器通过Performance API支持高精度定时器。 看看这些链接: https : //developer.mozilla.org/en-US/docs/Web/API/Performance

http://www.w3.org/TR/hr-time/#sec-DOMHighResTimeStamp