logo

Metoda JavaScript Obietnica all().

The Metoda Promise.all(). tak naprawdę jest metodą obiektu Promise (który w JavaScript jest także obiektem używanym do obsługi wszystkich operacji asynchronicznych), która jako dane wejściowe pobiera tablicę obietnic (iterowalną). Zwraca pojedynczy Obietnica to rozwiązuje się, gdy wszystkie obietnice przeszły jako iterowalne, które zostały rozwiązane, lub gdy iterowalna nie zawiera żadnych obietnic. W prosty sposób, jeśli którakolwiek z przekazanych obietnic zostanie odrzucona, to Obiecaj.wszystko() Metoda asynchronicznie odrzuca wartość obietnicy, która została już odrzucona, niezależnie od tego, czy inne obietnice zostały rozwiązane.

Składnia:



Promise.all( iterable )>

Parametry: Ta metoda akceptuje pojedynczy parametr iterowalne który pobiera tablicę obiecuje lub normalną tablicę zawierającą pewne obiekty.

Zwracane wartości: Aby zwrócić pojedynczą obietnicę, przestrzega się kilku zasad:

  • Jeśli przekazany argument jest pusty, zwraca obietnicę, która już istnieje rozwiązany .
  • Jeśli przekazana iteracja nie zawiera żadnych obietnic, zwraca obietnicę, która została rozwiązana asynchronicznie .
  • We wszystkich innych przypadkach zwraca oczekującą obietnicę.

Spełnienie i odrzucenie metody Promise.all():



Spełnienie: Zwrócona obietnica zostaje spełniona,

  • Jeśli przekazana iteracja jest pusta, wówczas ta metoda synchronicznie zwraca obietnicę, która została już rozwiązana.
  • Jeśli wszystkie przekazane obietnice zostaną spełnione, zwrócone obietnice zostaną spełnione asynchronicznie.
  • W tym przypadku pomyślne wykonanie tej konkretnej metody całkowicie zależy od wszystkich obietnic pomyślnego wykonania.

Odmowa: Jeśli którakolwiek z przekazanych obietnic zostanie odrzucona, wówczas ta metoda odrzuca wartość tej obietnicy, niezależnie od tego, czy inne obietnice zostały rozpatrzone, czy nie. Innymi słowy, jeśli jakakolwiek obietnica nie zostanie wykonana, metoda Promise.all() zwróci błąd i nie będzie brana pod uwagę, czy inne obietnice zostały pomyślnie spełnione, czy nie.

Poniższe przykłady ilustrują metodę JavaScript Promise.all():



konwersja daty na ciąg

Przykład 1: Metoda Promise.all() czeka spełnienie

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);> });>

>

alternatywa dla mylivecricket

>

Wyjście

[ 50, 200, 'geek' ]>

Przykład 2: Tutaj metoda Promise.all() jest rozpoznawana po 2000 ms, a wynik jest pokazywany w postaci tablicy.

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 =>konsola.log(wynik +>' '>))> // Completed in 1000> // Promise.all> Promise.all([tOut(1000), tOut(2000)])> >.then(result =>konsola.log(wynik))>

>

>

Wyjście:

Completed in 1000 Completed in 1000, Completed in 2000>

Tutaj, Obiecaj.wszystko() metoda to kolejność dotrzymywanych obietnic. Pierwsza obietnica w tablicy zostanie przetłumaczona na pierwszy element tablicy wyjściowej, druga obietnica będzie drugim elementem tablicy wyjściowej, i tak dalej.

Przykład 3: Tutaj jest , the Obiecaj.wszystko() metoda czeka, aż wszystkie obietnice zostaną spełnione.

JavaScript

klasa obiektu w Javie




// 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 =>konsola.log(odpowiedź))> // It prints after previous promises gets resolved> // ['Completed in 1000', 'Completed in 2000', 'Completed in 3000']>

>

>

Wyjście :

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

Przykład 4: Jak pokazano w tym przykładzie, jeśli jedna z obietnic nie powiedzie się, wszystkie pozostałe obietnice zawiodą, a wynik zostanie wyświetlony w konsoli w postaci błędu. Następnie Obiecaj.wszystko() metoda zostaje odrzucona.

JavaScript


kiedy pojawił się system Windows 7



// 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 =>konsola.log(odpowiedź))> >// Promise.all cannot be resolved, as one of the> >// promises passed, got rejected.> >.>catch>(error =>console.log(`::Error:: ${error}`))> // Promise.all throws an error.>

>

>

Wyjście :

Error Rejected in 2000>

Przykład-5: W tym przykładzie użyjemy funkcji timera (szczególnie funkcji setTimeout) z różnymi timerami, które zostaną zapisane w różnych obietnicach, a następnie te obietnice zostaną przekazane do metod Promise.all() w celu uzyskania wyniku.

JavaScript




wyrównanie tekstu CSS

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) =>konsola.log(dane));> }>catch> (error) {> >console.log(error);> }> // This code is contributed by Aman Singla...>

>

>

Wyjście:

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

Obsługiwane przeglądarki:

Przeglądarki obsługiwane przez Obietnica JavaScript.all() metody są wymienione poniżej:

  • Google Chrome 32 i nowsze
  • Edge 12 i nowsze
  • Firefox 29 i nowsze wersje
  • Opera 19 i nowsze
  • Safari 8 i nowsze
  • Internet Explorer nie jest obsługiwany