程序流程-requestAnimationFrame

Flow of program- requestAnimationFrame

这段JS代码在运行时给出了输出。这不应该导致无限递归调用并因此显示超出时间限制吗?请解释程序流程。

function main(ctime){
    window.requestAnimationFrame(main);
    if(start==undefined){
        start= ctime;
    }
    if((ctime-start)/1000<0.5){
        console.log(ctime);
        return;
    } 
}

window.requestAnimationFrame(main);

这里没有递归。 window.requestAnimationFrame(main); 只是将 main 放入回调队列而不执行或等待它(就像 setTimeout() 那样)并立即 returns,然后执行下一行。