Apakah window.requestAnimationFrame melakukan threading? [duplikat]
Apakah window.requestAnimationFramefungsi membuat utas baru agar fungsi yang dipanggil dan fungsi itu sendiri berjalan paralel? Karena saya tidak mengerti mengapa kode berikut, tidak mengakibatkan stack overflow.
window.requestAnimationFramepanggilan maindan mainpanggilan window.requestAnimationFramedan sebagainya ...
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>
Jawaban
requestAnimationFramememberi tahu browser untuk menjalankan fungsi sebelum bingkai berikutnya dirender. Jika Anda memanggil lagi requestAnimationFramemain itu akan menempatkan fungsi itu pada antrian untuk animasiFrame berikutnya (bukan saat ini).
Dalam Javascript, hanya pekerja yang di-thread.
requestAnimationFrameadalah fungsi khusus untuk mengeksekusi kode pada titik tertentu di Event Loop. Saya menemukan video ini cukup membantu dalam menjelaskan cara kerja Event Loop:https://www.youtube.com/watch?v=cCOL7MC4Pl0
Tidak. Fungsi yang diteruskan ke requestAnimationFrameantrean, bukan berulir.