Window.requestAnimationFrame effectue-t-il un threading? [dupliquer]
La window.requestAnimationFramefonction crée- t-elle de nouveaux threads pour laisser la fonction là où elle est appelée et la fonction elle-même s'exécuter en parallèle? Parce que je ne comprends pas pourquoi le code suivant n'entraîne pas un débordement de pile.
window.requestAnimationFrameappels mainet mainappels window.requestAnimationFrameet ainsi de suite ...
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>
Réponses
requestAnimationFrameindique au navigateur d'exécuter la fonction avant le rendu de l'image suivante. Si vous appelez requestAnimationFrameà nouveau main, il mettra cette fonction dans la file d'attente pour l'animationFrame suivante (et non actuelle).
En Javascript, seuls les workers sont threadés.
requestAnimationFrameest une fonction spéciale pour exécuter du code à un point spécifique de la boucle d'événements. J'ai trouvé cette vidéo très utile pour expliquer le fonctionnement de la boucle d'événement:https://www.youtube.com/watch?v=cCOL7MC4Pl0
Non. Les fonctions transmises à requestAnimationFramesont mises en file d'attente et non liées.