JavaScript : rendre le Web interactif (école d'ingénieur) · Chapitre 9 · Exercice de TD
Les commandes jamais comptées
Programmation asynchrone · niveau 2
Énoncé
Ce programme affiche « envoyées : 0 » avant les trois lignes « commande … envoyée ». Expliquer, puis corriger pour que les trois envois se fassent en même temps et que le compte final soit 3.
const commandes = [1001, 1002, 1003];
let envoyees = 0;
async function envoyer(numero) {
await attendre(100);
console.log("commande", numero, "envoyée");
envoyees++;
}
commandes.forEach(async (numero) => {
await envoyer(numero);
});
console.log("envoyées :", envoyees);Corrigé
forEach appelle trois fois la fonction async, qui rend aussitôt une promesse en attente ; forEach l'ignore et se termine. La dernière ligne s'exécute donc immédiatement, avec envoyees encore à 0 ; les envois se terminent 100 ms plus tard. Correction :
await Promise.all(commandes.map(envoyer));
console.log("envoyées :", envoyees);
commande 1001 envoyée
commande 1002 envoyée
commande 1003 envoyée
envoyées : 3100 % 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.