import Enumerator from '../enumerator';
|
|
/**
|
`Promise.all` accepts an array of promises, and returns a new promise which
|
is fulfilled with an array of fulfillment values for the passed promises, or
|
rejected with the reason of the first passed promise to be rejected. It casts all
|
elements of the passed iterable to promises as it runs this algorithm.
|
|
Example:
|
|
```javascript
|
import Promise, { resolve } from 'rsvp';
|
|
let promise1 = resolve(1);
|
let promise2 = resolve(2);
|
let promise3 = resolve(3);
|
let promises = [ promise1, promise2, promise3 ];
|
|
Promise.all(promises).then(function(array){
|
// The array here would be [ 1, 2, 3 ];
|
});
|
```
|
|
If any of the `promises` given to `RSVP.all` are rejected, the first promise
|
that is rejected will be given as an argument to the returned promises's
|
rejection handler. For example:
|
|
Example:
|
|
```javascript
|
import Promise, { resolve, reject } from 'rsvp';
|
|
let promise1 = resolve(1);
|
let promise2 = reject(new Error("2"));
|
let promise3 = reject(new Error("3"));
|
let promises = [ promise1, promise2, promise3 ];
|
|
Promise.all(promises).then(function(array){
|
// Code here never runs because there are rejected promises!
|
}, function(error) {
|
// error.message === "2"
|
});
|
```
|
|
@method all
|
@for Promise
|
@param {Array} entries array of promises
|
@param {String} [label] optional string for labeling the promise.
|
Useful for tooling.
|
@return {Promise} promise that is fulfilled when all `promises` have been
|
fulfilled, or rejected if any of them become rejected.
|
@static
|
*/
|
export default function all(entries, label) {
|
if (!Array.isArray(entries)) {
|
return this.reject(new TypeError("Promise.all must be called with an array"), label);
|
}
|
return new Enumerator(this, entries, true /* abort on reject */, label).promise;
|
}
|