Bases des technologies web
console.log('A');
setTimeout(() => console.log('B'), 0);
Promise.resolve().then(() => console.log('C'));
console.log('D');Lorsqu'on exécute le JavaScript ci-dessus dans un navigateur, quel est l'ordre correct d'affichage des caractères dans la console ?
- AA → B → C → D
- BA → D → B → C
- CA → D → C → B
Afficher la réponse et l'explication
Réponse : C. A → D → C → B
Le JavaScript d'une page s'exécute sur un seul thread principal, et aucun autre traitement ne s'intercale tant que le code en cours n'est pas terminé. Tout le code synchrone s'exécute d'abord, ce qui affiche A et D. Le traitement passé à then d'une Promise est une microtâche, exécutée juste après la fin du code en cours : C s'affiche donc ensuite. Même avec 0 ms pour setTimeout, le traitement est placé comme tâche dans la file des tâches en attente, et la boucle d'événements ne l'en retire qu'après avoir traité les microtâches : B arrive donc en dernier.
Continuer : 9 autres questions sur Bases des technologies web