mirror of
https://github.com/actions/setup-python.git
synced 2026-04-16 19:15:39 +02:00
Initial pass
This commit is contained in:
+81
@@ -0,0 +1,81 @@
|
||||
import {
|
||||
default as Enumerator,
|
||||
setSettledResult
|
||||
} from './enumerator';
|
||||
import Promise from './promise';
|
||||
|
||||
/**
|
||||
@module rsvp
|
||||
@public
|
||||
**/
|
||||
|
||||
class AllSettled extends Enumerator {
|
||||
constructor(Constructor, entries, label) {
|
||||
super(Constructor, entries, false /* don't abort on reject */, label);
|
||||
}
|
||||
}
|
||||
|
||||
AllSettled.prototype._setResultAt = setSettledResult;
|
||||
|
||||
/**
|
||||
`RSVP.allSettled` is similar to `RSVP.all`, but instead of implementing
|
||||
a fail-fast method, it waits until all the promises have returned and
|
||||
shows you all the results. This is useful if you want to handle multiple
|
||||
promises' failure states together as a set.
|
||||
|
||||
Returns a promise that is fulfilled when all the given promises have been
|
||||
settled. The return promise is fulfilled with an array of the states of
|
||||
the promises passed into the `promises` array argument.
|
||||
|
||||
Each state object will either indicate fulfillment or rejection, and
|
||||
provide the corresponding value or reason. The states will take one of
|
||||
the following formats:
|
||||
|
||||
```javascript
|
||||
{ state: 'fulfilled', value: value }
|
||||
or
|
||||
{ state: 'rejected', reason: reason }
|
||||
```
|
||||
|
||||
Example:
|
||||
|
||||
```javascript
|
||||
let promise1 = RSVP.Promise.resolve(1);
|
||||
let promise2 = RSVP.Promise.reject(new Error('2'));
|
||||
let promise3 = RSVP.Promise.reject(new Error('3'));
|
||||
let promises = [ promise1, promise2, promise3 ];
|
||||
|
||||
RSVP.allSettled(promises).then(function(array){
|
||||
// array == [
|
||||
// { state: 'fulfilled', value: 1 },
|
||||
// { state: 'rejected', reason: Error },
|
||||
// { state: 'rejected', reason: Error }
|
||||
// ]
|
||||
// Note that for the second item, reason.message will be '2', and for the
|
||||
// third item, reason.message will be '3'.
|
||||
}, function(error) {
|
||||
// Not run. (This block would only be called if allSettled had failed,
|
||||
// for instance if passed an incorrect argument type.)
|
||||
});
|
||||
```
|
||||
|
||||
@method allSettled
|
||||
@public
|
||||
@static
|
||||
@for rsvp
|
||||
@param {Array} entries
|
||||
@param {String} [label] - optional string that describes the promise.
|
||||
Useful for tooling.
|
||||
@return {Promise} promise that is fulfilled with an array of the settled
|
||||
states of the constituent promises.
|
||||
*/
|
||||
|
||||
export default function allSettled(entries, label) {
|
||||
if (!Array.isArray(entries)) {
|
||||
return Promise.reject(new TypeError("Promise.allSettled must be called with an array"), label);
|
||||
}
|
||||
|
||||
return new AllSettled(Promise, entries, label).promise;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user