Aller au contenu

API Promise JavaScript

En JavaScript, maîtriser les promesses est essentiel pour développer des applications réactives, évolutives et maintenables. Pour une introduction aux promesses, consultez nos pages précédentes comme JavaScript : Promesses. Cet article explore en profondeur les aspects subtils des Promesses JavaScript, en se concentrant spécifiquement sur Promise.all, Promise.allSettled, Promise.race et la mise en œuvre de polyfills pour ces méthodes. En améliorant votre compréhension et votre capacité à implémenter ces techniques avancées, vous améliorerez considérablement l'efficacité et la fiabilité de votre code JavaScript.

Utiliser Promise.all pour des tâches concurrentes

Promise.all est une méthode essentielle pour gérer plusieurs promesses de manière concurrente. Lorsque vous devez effectuer plusieurs opérations asynchrones et n'avancer qu'une fois qu'elles sont toutes terminées avec succès, Promise.all est l'outil qu'il vous faut.

Comment implémenter Promise.all

Voici un exemple illustrant l'utilisation de Promise.all pour gérer plusieurs requêtes API simultanément :


Output appears here after Run.

Dans cet exemple, Promise.all prend un tableau de promesses et se résout en un tableau contenant les résultats de ces promesses. Si une promesse échoue, Promise.all est rejeté avec la raison de la première promesse qui a été rejetée.

Maîtriser Promise.allSettled

Contrairement à Promise.all, la méthode Promise.allSettled renvoie une promesse qui se résout après que toutes les promesses données aient été soit résolues, soit rejetées, avec un tableau d'objets décrivant chacun le résultat de chaque promesse.

Exemple de Promise.allSettled

Voici comment utiliser Promise.allSettled :


Output appears here after Run.

Remarque : Promise.allSettled ne rejette jamais. Elle se résout toujours avec un tableau d'objets de résultat, chacun contenant une propriété status ('fulfilled' ou 'rejected') et soit une propriété value, soit une propriété reason.

Cette méthode est particulièrement utile lorsque vous devez vous assurer que toutes les promesses aboutissent, qu'elles soient accomplies ou rejetées.

Implémenter Promise.race

Promise.race est un autre outil puissant qui permet de gérer plusieurs promesses en se résolvant ou en étant rejeté dès qu'une des promesses de l'itérable se résout ou est rejetée.

Comment utiliser Promise.race

Voici une application pratique de Promise.race :


Output appears here after Run.

Cette méthode est idéale pour les scénarios où vous avez besoin du résultat le plus rapide parmi plusieurs opérations asynchrones.

Créer un polyfill pour Promise.allSettled

Tous les environnements ne prennent pas en charge nativement Promise.allSettled. Par conséquent, implémenter un polyfill peut garantir la compatibilité entre différents environnements JavaScript.

Polyfill pour Promise.allSettled

Voici comment créer un polyfill simple :


Output appears here after Run.

Ce polyfill fournit une fonctionnalité de base où chaque promesse est gérée individuellement et résolue vers son résultat respectif, garantissant ainsi que le comportement allSettled est correctement simulé.

En intégrant ces techniques avancées de promesses et en comprenant les mécanismes sous-jacents des polyfills, vous pouvez élever votre code JavaScript à de nouveaux sommets. Ces méthodes améliorent non seulement la fiabilité du code, mais offrent également un contrôle affiné sur les opérations asynchrones, ouvrant la voie à des applications web plus robustes.

Pratique

Parmi les affirmations suivantes, lesquelles sont vraies concernant les Promesses en JavaScript selon les informations fournies sur le site ?

Trouvez-vous cela utile?

Aperçu dual-run — comparez avec les routes Symfony en production.