window.requestAnimationFrame 是否执行线程?

Does window.requestAnimationFrame perform threading?

window.requestAnimationFrame 函数是否创建新的线程来让调用它的函数和函数本身 运行 并行?因为我不明白为什么下面的代码不会导致堆栈溢出。

window.requestAnimationFrame 调用 main 并且 main 调用 window.requestAnimationFrame 等等...

w.rAF -> main -> w.rAF -> main -> w.rAF 。 . .

main.js

function main(currentTime){
    window.requestAnimationFrame(main);
    console.log(currentTime);
}

window.requestAnimationFrame(main);

index.html

<script src="main.js"></script>

没有。传递给 requestAnimationFrame 的函数是排队的,而不是线程化的。

requestAnimationFrame 告诉浏览器在渲染下一帧之前 运行 该函数。 如果您再次在 main 中调用 requestAnimationFrame,它将将该函数放入下一个(不是当前)animationFrame 的队列中。

在 Javascript 中只有 worker 是线程化的。

requestAnimationFrame 是一个特殊的函数,用于在事件循环的特定点执行代码。我发现这个视频对解释事件循环的工作原理很有帮助: https://www.youtube.com/watch?v=cCOL7MC4Pl0