Aller au contenu principal
U/
Async
javascript

Promise.all sur trois délais

Lancer trois promesses basées sur setTimeout (200 ms, 500 ms, 100 ms) en parallèle avec Promise.all et afficher le tableau de résultats une fois toutes résolues.

25 minPublié le 20 mai 2026Proposé par Anonyme

Défi

// Lisez attentivement, codez sur votre machine

Énoncé

Créer trois promesses qui se résolvent après respectivement 200 ms, 500 ms et 100 ms, chacune avec une valeur différente ("A", "B", "C"). Les lancer en parallèle avec Promise.all. Afficher le tableau de résultats dans l'ordre des promesses (pas l'ordre d'arrivée) dès que toutes sont résolues. La durée totale doit être proche de 500 ms, pas de 800 ms.

Contraintes

  • ES2022+ (Node.js 18+).
  • Utiliser Promise.all — pas Promise.allSettled, pas Promise.race, pas await séquentiel.
  • Chaque promesse est construite autour de setTimeout (pas d'import externe).
  • Afficher le tableau avec console.log.
  • Pas de bibliothèque externe.

Exemple

function delai(ms, valeur) {
  return new Promise((resolve) => setTimeout(() => resolve(valeur), ms));
}

async function main() {
  const resultats = await Promise.all([
    delai(200, "A"),
    delai(500, "B"),
    delai(100, "C"),
  ]);
  console.log(resultats);
}

main();
[ 'A', 'B', 'C' ]

L'ordre des valeurs dans le tableau correspond à l'ordre des promesses dans Promise.all, indépendamment de l'ordre de résolution.

Espace solution

Proposer une solution

Connectez-vous ou créez un compte pour envoyer votre code (aucune exécution côté serveur — on stocke juste le texte pour la communauté).

// À garder en tête
  • D'abord, faire marcher

    On ne cherche pas à optimiser : d'abord, on fait marcher le truc. Optimiser vient ensuite — et ça aussi, ça s'apprend. (Si un défi porte sur l'optimisation, son énoncé le précise.)

  • Pas de mauvaise réponse

    Il n'y a pas de mauvaise réponse à un défi. Le but, c'est de le faire. Ce qui compte, c'est de s'entraîner.

  • Trop dur ? Au suivant

    Un défi te résiste ? N'hésite pas à en prendre un autre. Ils seront encore là demain.