2014-09-21 46 views
1

我试图在node.js和现代web浏览器上每隔10ms运行一次游戏循环。这个版本的Chrome运行正常(1ms的精度内住宿):如何在JavaScript中实现精确的跨平台游戏循环?

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

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

什么是更好的方式来实现一个精确的,跨平台的JavaScript游戏循环?

回答