window.requestAnimationFrame ทำเธรดหรือไม่ [ซ้ำ]

Sep 01 2020

ที่ไม่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>

คำตอบ

1 Snuffels11 Sep 01 2020 at 13:09

requestAnimationFrameบอกให้เบราว์เซอร์เรียกใช้ฟังก์ชันก่อนที่จะแสดงเฟรมถัดไป หากคุณเรียกอีกครั้งrequestAnimationFrameใน main จะทำให้ฟังก์ชันนั้นอยู่ในคิวสำหรับ animationFrame ถัดไป (ไม่ใช่ปัจจุบัน)

ใน Javascript จะมีเพียงเธรดคนงานเท่านั้น

requestAnimationFrameเป็นฟังก์ชั่นพิเศษในการรันโค้ดที่จุดเฉพาะใน Event Loop ฉันพบว่าวิดีโอนี้มีประโยชน์มากในการอธิบายวิธีการทำงานของ Event Loop:https://www.youtube.com/watch?v=cCOL7MC4Pl0

1 Quentin Sep 01 2020 at 12:53

ไม่ใช่ฟังก์ชันที่ส่งผ่านไปยังrequestAnimationFrameอยู่ในคิวไม่ใช่เธรด