Adloun

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

Exercice suivant et tuteur

Sans compte : le cours et le premier QCM. Exercices et tuteur : inscription gratuite en 30 secondes, sans carte bancaire.

Le cours du chapitre · Tous les exercices du chapitre

Exercice suivant et tuteur →