Adloun

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 : 3

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 →