logo

Méthode JavaScript Promise all()

Le Méthode Promise.all() est en fait une méthode de l'objet Promise (qui est aussi un objet sous JavaScript utilisé pour gérer toutes les opérations asynchrones), qui prend en entrée un tableau de promesses (un itérable). Il renvoie un seul Promesse qui se résout lorsque toutes les promesses passées sous forme d'itérable, qui ont été résolues, ou lorsque l'itérable ne contient aucune promesse. D'une manière simple, si l'une des promesses transmises est rejetée, le Promesse.all() La méthode rejette de manière asynchrone la valeur de la promesse qui a déjà été rejetée, que les autres promesses aient été résolues ou non.

Syntaxe:



Promise.all( iterable )>

Paramètres: Cette méthode accepte un seul paramètre itérable qui prend un tableau de promesses ou un tableau normal contenant des objets.

Valeurs de retour : Il suit quelques règles pour renvoyer une seule promesse :

  • Si l'argument passé est vide, il renvoie une promesse déjà résolu .
  • Si l'itérable passé ne contient aucune promesse, il renvoie une promesse qui est résolue de manière asynchrone .
  • Dans tous les autres cas, il renvoie une promesse en attente.

Exécution et rejet de la méthode Promise.all() :



Accomplissement: La promesse retournée est remplie,

  • Si l'itérable passé est vide, alors cette méthode renvoie de manière synchrone une promesse qui est déjà résolue.
  • Si toutes les promesses transmises sont remplies, les promesses renvoyées sont remplies de manière asynchrone.
  • Ici, la réussite de l’exécution de cette méthode particulière dépend totalement de toutes les promesses d’exécution réussie.

Rejet: Si l'une des promesses passées est rejetée, cette méthode rejette la valeur de cette promesse, que les autres promesses aient été résolues ou non. En d’autres termes, si une promesse ne parvient pas à être exécutée, la méthode Promise.all() renverra une erreur et ne tiendra pas compte du fait que les autres promesses soient remplies avec succès ou non.

Les exemples ci-dessous illustrent la méthode JavaScript Promise.all() :



exécuter le shell de script

Exemple 1: La méthode Promise.all() attend accomplissement

javascript




p1 = Promise.resolve(50);> p2 = 200> p3 =>new> Promise(>function> (resolve, reject) {> >setTimeout(resolve, 100,>'geek'>);> });> Promise.all([p1, p2, p3]).then(>function> (values) {> >console.log(values);> });>

>

couverture du relevé

>

Sortir

[ 50, 200, 'geek' ]>

Exemple 2 : Ici, la méthode Promise.all() se résout après 2000 ms et la sortie est affichée sous forme de tableau.

javascript




// Simple promise that resolves> // after a given time> const tOut = (t) =>{> >return> new> Promise((resolve, reject) =>{> >setTimeout(() =>{> >resolve(`Completed>in> ${t}`)> >}, t)> >})> }> // Resolving a normal promise> tOut(1000).then(result =>console.log(résultat +>' '>))> // Completed in 1000> // Promise.all> Promise.all([tOut(1000), tOut(2000)])> >.then(result =>console.log(résultat))>

>

>

Sortir:

Completed in 1000 Completed in 1000, Completed in 2000>

Ici, Promesse.all() La méthode est l’ordre des promesses tenues. La première promesse du tableau sera résolue en premier élément du tableau de sortie, la deuxième promesse sera un deuxième élément du tableau de sortie, et ainsi de suite.

Exemple 3 : Voici , le Promesse.all() la méthode attend que toutes les promesses soient résolues.

javascript

machine à états finis




// Simple promise that resolves after a given time> const tOut = (t) =>{> >return> new> Promise((resolve, reject) =>{> >setTimeout(() =>{> >resolve(`Completed>in> ${t}`)> >}, t)> >})> }> // Array contains some time duration> const durations = [1000, 2000, 3000]> const promises = []>// Empty array> durations.map((duration) =>{> >// Calling the async function timeout(), so> >// at this point the async function has started> >// and enters the 'pending' state> >// pushing the pending promise to an array.> >promises.push(tOut(duration))> })> console.log(promises)> // Passing an array of pending promises to Promise.all> // Promise.all will wait till all the promises get resolves> // and then the same gets resolved.> Promise.all(promises).then(response =>console.log(réponse))> // It prints after previous promises gets resolved> // ['Completed in 1000', 'Completed in 2000', 'Completed in 3000']>

>

>

Sortir :

[object Promise], [object Promise], [object Promise] . . . (gap between previous and last promises) . . Completed in 1000, Completed in 2000, Completed in 3000>

Exemple 4 : Comme le montre cet exemple, si l'une des promesses échoue, alors toutes les autres promesses échouent et le résultat sera affiché dans la console sous la forme d'une erreur. Alors Promesse.all() la méthode est rejetée.

javascript


différence de date Excel



// Promise that resolves after a given time> const tOut = (t) =>{> >return> new> Promise((resolve, reject) =>{> >setTimeout(() =>{> >if> (t === 2000) {> >reject(`Rejected>in> ${t}`)> >}>else> {> >resolve(`Completed>in> ${t}`)> >}> >}, t)> >})> }> const durations = [1000, 2000, 3000]> // Array contains some time durations> const promises = []>//empty array> durations.map((duration) =>{> >promises.push(tOut(duration))> >// Pushing durations in the promises array> })> // Passing an array of pending promises to Promise.all> Promise.all(promises).then(response =>console.log(réponse))> >// Promise.all cannot be resolved, as one of the> >// promises passed, got rejected.> >.>catch>(error =>console.log(`::Erreur :: ${error}`))> // Promise.all throws an error.>

>

>

Sortir :

Error Rejected in 2000>

Exemple-5 : Dans cet exemple, nous utiliserons une fonction de minuterie (en particulier la fonction setTimeout) contenant différentes minuteries et celles-ci seront écrites dans différentes promesses et ces promesses seront en outre transmises dans les méthodes Promise.all() afin d'obtenir le résultat.

Javascript




java longueur du tableau

let first_promise =>new> Promise((resolve, reject) =>{> >setTimeout(() =>{> >resolve(>'Resolved First after 1 second'>);> >}, 1000);> });> let second_promise =>new> Promise((resolve, reject) =>{> >setTimeout(() =>{> >resolve(>'Resolved First after 2 seconds'>);> >}, 2000);> });> let third_promise =>new> Promise((resolve, reject) =>{> >setTimeout(() =>{> >resolve(>'Resolved First after 3 seconds'>);> >}, 3000);> });> try> {> >let result = Promise.all([first_promise, second_promise, third_promise]);> >result.then((data) =>console.log(données));> }>catch> (error) {> >console.log(error);> }> // This code is contributed by Aman Singla...>

>

>

Sortir:

[  'Resolved First after 1 second',  'Resolved First after 2 seconds',  'Resolved First after 3 seconds' ]>

Navigateurs pris en charge :

Les navigateurs pris en charge par Promesse JavaScript.all() les méthodes sont répertoriées ci-dessous :

  • Google Chrome 32 et supérieur
  • Bord 12 et supérieur
  • Firefox 29 et supérieur
  • Opéra 19 et supérieur
  • Safari 8 et supérieur
  • Internet Explorer non pris en charge