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
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