Window.requestAnimationFrame effectue-t-il un threading? [dupliquer]

Sep 01 2020

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

1 Snuffels11 Sep 01 2020 at 13:09

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

1 Quentin Sep 01 2020 at 12:53

Non. Les fonctions transmises à requestAnimationFramesont mises en file d'attente et non liées.