Window.requestAnimationFrame esegue il threading? [duplicare]

Sep 01 2020

La window.requestAnimationFramefunzione crea nuovi thread per consentire alla funzione in cui viene chiamata e alla funzione stessa di essere eseguite parallelamente? Perché non capisco perché il seguente codice non si traduca in un overflow dello stack.

window.requestAnimationFramechiamate maine mainchiamate window.requestAnimationFramee così via ...

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>

Risposte

1 Snuffels11 Sep 01 2020 at 13:09

requestAnimationFramedice al browser di eseguire la funzione prima che venga eseguito il rendering del frame successivo. Se chiami di nuovo requestAnimationFramein main, questa funzione verrà messa in coda per il frame di animazione successivo (non quello corrente).

In Javascript solo i lavoratori sono filettati.

requestAnimationFrameè una funzione speciale per eseguire codice nel punto specifico dell'Event Loop. Ho trovato questo video molto utile per spiegare come funziona l'Event Loop:https://www.youtube.com/watch?v=cCOL7MC4Pl0

1 Quentin Sep 01 2020 at 12:53

No. Le funzioni passate requestAnimationFramesono in coda, non in thread.