Traduzione in corso.
Il metodo Promise.all(iterable)
restituisce un promise che viene risolto quando tutte i promise nell'iterable passato come parametro vengono risolti, o scatena una reject contenente la ragione del primo promise che viene rigettato.
Sintassi
Promise.all(iterable);
Parameteri
Valore di ritorno
Un Promise
viene risolto quando tutte i promise nell'iterable passato come parametro vengono risolti, o scatena una reject contenente la ragione del primo promise che viene rigettato
Descrizione
Il metodo Promise.all ritorna un array di valori ritornati dai promise nell oggetto iterable che ha ricevuto. L'array dei valori ritornati mantiene lo stesso ordine dell'oggetto iterable originario e non l'ordine di risoluzione dei promise. Se uno dei valori dell'oggetto iterabile passato come parametro non un promise viene automaticamente convertito con Promise.resolve
.
Se uno qualsiasi dei promise passati viene rigettato, il metodo all
Promise viene rigettato automaticamente con il valore del promise rigettato, scartando tutti i promise indipendentemente dal fatto che i promise siano stati risolti o meno. Se viene passato un un array vuoto, allora questo metodo ritorna immediatamente.
Esempi
Usare Promise.all
Il metodo Promise.all
aspetta la risoluzione di tutti i promise (oil primo che viene rigettato).
var p1 = Promise.resolve(3); var p2 = 1337; var p3 = new Promise((resolve, reject) => { setTimeout(resolve, 100, "foo"); }); Promise.all([p1, p2, p3]).then(values => { console.log(values); // [3, 1337, "foo"] });
Promise.all
comportamento fail-fast
Il metodo Promise.all
viene rigettato se uno degli elementi viene rigettato e Promise.all
viene rigettato immediatamente: in caso di quattro promise vhe vengono risolti dopo un timeout, e uno viene rigettato immediatamente allora Promise.all
viene rigettao immediamente.
var p1 = new Promise((resolve, reject) => { setTimeout(resolve, 1000, "one"); }); var p2 = new Promise((resolve, reject) => { setTimeout(resolve, 2000, "two"); }); var p3 = new Promise((resolve, reject) => { setTimeout(resolve, 3000, "three"); }); var p4 = new Promise((resolve, reject) => { setTimeout(resolve, 4000, "four"); }); var p5 = new Promise((resolve, reject) => { reject("reject"); }); Promise.all([p1, p2, p3, p4, p5]).then(value => { console.log(value); }, reason => { console.log(reason) }); //From console: //"reject"
Specifiche
Specifiche | Status | Commenti |
---|---|---|
ECMAScript 2015 (6th Edition, ECMA-262) The definition of 'Promise.all' in that specification. |
Standard | Definizione iniziale nello standard ECMA. |
ECMAScript 2017 Draft (ECMA-262) The definition of 'Promise.all' in that specification. |
Draft |
Compatibilitá dei browser
To contribute to this compatibility data, please write a pull request against this file: https://github.com/mdn/browser-compat-data/blob/master/javascript/promise.json.
Feature | Chrome | Edge | Firefox | Internet Explorer | Opera | Safari | Servo |
---|---|---|---|---|---|---|---|
Basic Support | 32.0 | (Yes) | 29.0 | No support | 19 | 7.1 | No support |
Feature | Android | Chrome for Android | Edge Mobile | Firefox for Android | IE Mobile | Opera Mobile | Safari Mobile |
---|---|---|---|---|---|---|---|
Basic Support | 4.4.4 | 32.0 | (Yes) | 29 | No support | (Yes) | 8.0 |