The Metoda Promise.all(). este de fapt o metodă a obiectului Promise (care este, de asemenea, un obiect sub JavaScript folosit pentru a gestiona toate operațiunile asincrone), care ia ca intrare o serie de promisiuni (un iterabil). Se întoarce un singur Promisiune care se rezolvă atunci când toate promisiunile au trecut ca un iterabil, care s-au rezolvat sau când iterabilul nu conține promisiuni. Într-un mod simplu, dacă vreuna dintre promisiunile transmise respinge, atunci Promise.all() metoda respinge în mod asincron valoarea promisiunii care a fost deja respinsă, indiferent dacă celelalte promisiuni au fost sau nu rezolvate.
Sintaxă:
Promise.all( iterable )>
Parametri: Această metodă acceptă un singur parametru iterabil care ia o serie de promisiuni sau o matrice normală care conține unele obiecte.
Valori returnate: Urmează câteva reguli pentru a returna o singură promisiune:
- Dacă argumentul transmis este gol, returnează o Promisiune care este deja rezolvat .
- Dacă iterabilul transmis nu conține promisiuni, returnează o Promisiune care este rezolvată asincron .
- Pentru toate celelalte cazuri, returnează o Promisiune în așteptare.
Îndeplinirea și respingerea Promise.all() Metoda:
Împlinire: Promisiunea returnată este îndeplinită,
- Dacă iterabilul transmis este gol, atunci această metodă returnează o promisiune în mod sincron, care este deja rezolvată.
- Dacă toate promisiunile trecute sunt îndeplinite, promisiunile returnate sunt îndeplinite asincron.
- Aici, execuția cu succes a acestei metode depinde în totalitate de toate promisiunile de a fi executate cu succes.
Respingere: Dacă oricare dintre promisiunile trecute este respinsă, atunci această metodă respinge valoarea acelei promisiuni, indiferent dacă celelalte promisiuni au fost sau nu rezolvate. Cu alte cuvinte, dacă vreo promisiune nu reușește să fie executată, atunci metoda Promise.all() va returna o eroare și nu va lua în considerare dacă alte promisiuni sunt îndeplinite cu succes sau nu.
Exemplele de mai jos ilustrează metoda JavaScript Promise.all():
Exemplul 1: Metoda Promise.all() așteaptă împlinire
shloka mehta
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);> });> |
>
text îngroșat css
>Ieșire
[ 50, 200, 'geek' ]>
Exemplul 2: Aici metoda Promise.all() se rezolvă după 2000ms și rezultatul este afișat ca o matrice.
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(rezultat +>' '>))> // Completed in 1000> // Promise.all> Promise.all([tOut(1000), tOut(2000)])> >.then(result =>console.log(rezultat))> |
>
>
Ieșire:
Completed in 1000 Completed in 1000, Completed in 2000>
Aici, Promise.all() metoda este ordinea promisiunilor menţinute. Prima promisiune din matrice va fi rezolvată la primul element al matricei de ieșire, a doua promisiune va fi un al doilea element din matricea de ieșire, și așa mai departe.
Exemplul 3: Aici este , cel Promise.all() metoda așteaptă până se rezolvă toate promisiunile.
javascript
parafrazați dacă prin rudyard kipling
// 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ăspuns))> // It prints after previous promises gets resolved> // ['Completed in 1000', 'Completed in 2000', 'Completed in 3000']> |
>
>
Ieșire:
[object Promise], [object Promise], [object Promise] . . . (gap between previous and last promises) . . Completed in 1000, Completed in 2000, Completed in 3000>
Exemplul 4: După cum se arată în acest exemplu, dacă una dintre promisiuni eșuează, atunci toate celelalte promisiuni eșuează și rezultatul va fi afișat în consolă sub forma unei erori. Apoi Promise.all() metoda este respinsă.
javascript
// 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ăspuns))> >// Promise.all cannot be resolved, as one of the> >// promises passed, got rejected.> >.>catch>(error =>console.log(`::Eroare:: ${eroare}`))> // Promise.all throws an error.> |
Jasmine Davis în copilărie
>
>
Ieșire:
Error Rejected in 2000>
Exemplul-5: În acest exemplu, vom folosi o funcție de cronometru (în special funcția setTimeout) care are cronometre diferite în ea și acestea vor fi scrise în diferite promisiuni și în continuare acele promisiuni vor fi trecute în cadrul metodelor Promise.all() pentru a obține rezultatul.
Javascript
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(date));> }>catch> (error) {> >console.log(error);> }> // This code is contributed by Aman Singla...> |
aruncați gestionarea excepțiilor în java
>
>
Ieșire:
[ 'Resolved First after 1 second', 'Resolved First after 2 seconds', 'Resolved First after 3 seconds' ]>
Browsere acceptate:
Browserele acceptate de JavaScript Promise.all() metodele sunt enumerate mai jos:
- Google Chrome 32 și versiuni ulterioare
- Edge 12 și mai sus
- Firefox 29 și versiuni ulterioare
- Opera 19 și mai sus
- Safari 8 și mai sus
- Internet Explorer nu este acceptat