Adloun

JavaScript : rendre le Web interactif (école d'ingénieur) · Chapitre 9 · Application directe du cours

Trois façons d'attendre

Programmation asynchrone · niveau 2

Énoncé

Les fonctions prix(), stock() et avis() renvoient des promesses tenues après respectivement 400, 300 et 200 ms. Combien de temps dure chacune de ces trois versions ?


// version 1
await prix(); await stock(); await avis();

// version 2
await Promise.all([prix(), stock(), avis()]);

// version 3
const p = prix();
const s = stock();
await avis();
await p;
await s;

Corrigé

  • Version 1 : chaque await attend la fin du précédent avant de lancer l'opération suivante : ms.
  • Version 2 : les trois opérations partent ensemble ; durée de la plus longue, 400 ms.
  • Version 3 : les trois opérations sont lancées sur les trois premières lignes (appeler prix() démarre l'opération, l'await ne fait qu'attendre son résultat) ; on attend avis (200 ms), puis p (encore 200 ms), puis s (déjà tenue) : 400 ms.

Durées mesurées (exercices/ex5-duree.mjs) : 900, 400 et 400 ms. Ce qui coûte, ce n'est pas await, c'est de ne lancer une opération qu'après la fin de la précédente. La version 3 a toutefois un défaut : si s est rompue pendant que l'on attend p, la rupture n'est rattrapée par personne pendant ce temps ; Promise.all est plus sûr.

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 →