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
awaitattend 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'awaitne 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
- 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.