Apakah window.requestAnimationFrame melakukan threading? [duplikat]

Sep 01 2020

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

1 Snuffels11 Sep 01 2020 at 13:09

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

1 Quentin Sep 01 2020 at 12:53

Tidak. Fungsi yang diteruskan ke requestAnimationFrameantrean, bukan berulir.