无限次运行一个函数

时间:2016-07-30 19:57:38

标签: javascript performance loops infinite

我试图创建一个必须将render函数作为循环运行的视频游戏引擎。当这个功能完成后,我想再次运行它,然后再次运行......但是当我尝试这个时:

function render() {
    // some code here which takes ~ 0.00015 second to run
}

while(1) { render(); }

浏览器会在几秒钟后冻结。所以我尝试了另一种方式:

function render() {
    // some code here which takes ~ 0.00015 second to run
}

setTimeout(render);
// I've tried also
setTimeout(render, 1);

另外:

function render() {
    // some code here which takes ~ 0.00015 second to run

    setTimeout(render);
    // OR
    setTimeout(render, 1);
}

但是这个功能每秒只运行~500次,我想运行它〜5000次。如果我查看运行时间(0.00015秒),这是可能的,但我无法找到方法。

有没有人有想法?

1 个答案:

答案 0 :(得分:3)

您要做的是以这种方式使用window.requestAnimationFrame

function render() {
    window.requestAnimationFrame(render);
}

window.requestAnimationFrame(render);

您永远无法获得“无限”的呼叫量,这取决于您的硬件有多强。您还可以轻松计算“增量时间”(两次连续render次呼叫之间经过的时间量),以便让任何用户无论硬件是什么都能顺利进行游戏动画。