JavaScript : rendre le Web interactif (école d'ingénieur) · Chapitre 9 · Exercice de TD
Une pause qui ne gèle rien
Programmation asynchrone · niveau 1 (application)
Énoncé
Écrire une fonction attendre(ms) qui renvoie une promesse tenue au bout de ms millisecondes. S'en servir, avec await et une boucle for…of, pour afficher « 3 », « 2 », « 1 » à une seconde d'intervalle, puis « Partez ! ». Pourquoi cette pause ne gèle-t-elle pas la page, contrairement à la boucle while du cours ?
Corrigé
function attendre(ms) {
return new Promise((resoudre) => setTimeout(resoudre, ms));
}
for (const n of [3, 2, 1]) {
console.log(n);
await attendre(1000);
}
console.log("Partez !");
La boucle while occupait le fil pendant toute l'attente. Ici, await suspend la fonction (ou le module) et libère le fil : le navigateur peut afficher et traiter les clics ; un minuteur reprendra l'exécution une seconde plus tard.
100 % gratuit
La suite du chapitre est sur Adloun
- 11 autres exercices corrigés dans ce chapitre
- Les 2 QCM du chapitre, le premier sans compte
- Le tuteur, qui guide pas à pas sans donner la réponse
Sans compte : le cours et le premier QCM. Exercices et tuteur : inscription gratuite en 30 secondes, sans carte bancaire.