• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1import Enumerator from '../enumerator';
2
3/**
4  `Promise.all` accepts an array of promises, and returns a new promise which
5  is fulfilled with an array of fulfillment values for the passed promises, or
6  rejected with the reason of the first passed promise to be rejected. It casts all
7  elements of the passed iterable to promises as it runs this algorithm.
8
9  Example:
10
11  ```javascript
12  let promise1 = resolve(1);
13  let promise2 = resolve(2);
14  let promise3 = resolve(3);
15  let promises = [ promise1, promise2, promise3 ];
16
17  Promise.all(promises).then(function(array){
18    // The array here would be [ 1, 2, 3 ];
19  });
20  ```
21
22  If any of the `promises` given to `all` are rejected, the first promise
23  that is rejected will be given as an argument to the returned promises's
24  rejection handler. For example:
25
26  Example:
27
28  ```javascript
29  let promise1 = resolve(1);
30  let promise2 = reject(new Error("2"));
31  let promise3 = reject(new Error("3"));
32  let promises = [ promise1, promise2, promise3 ];
33
34  Promise.all(promises).then(function(array){
35    // Code here never runs because there are rejected promises!
36  }, function(error) {
37    // error.message === "2"
38  });
39  ```
40
41  @method all
42  @static
43  @param {Array} entries array of promises
44  @param {String} label optional string for labeling the promise.
45  Useful for tooling.
46  @return {Promise} promise that is fulfilled when all `promises` have been
47  fulfilled, or rejected if any of them become rejected.
48  @static
49*/
50export default function all(entries) {
51  return new Enumerator(this, entries).promise;
52}
53