Press n or j to go to the next uncovered block, b, p or k for the previous block.
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 | 3x 3x 4x 2x | /**
* Executes all {@link Promise}s in serial order and returns either all results
* or throws the first error.
*
* The results will be returned in an {@link Array} with the same order as the
* executed {@link Promise}s.
*
* @example
* Execute all {@link Promise}s in serial
* ```ts
* const promise = allSerial([
* Promise.resolve(1),
* Promise.resolve(2)
* ]);
*
* promise.then(v => console.log(v)); // [1, 2]
* ```
*
* @param promises - the {@link Promise}s to execute in serial order
* @returns a {@link Promise} that executes all {@link Promise}s in serial
*/
export const allSerial = async <T>(
promises: Iterable<Promise<T>>,
// internal variables:
values: T[] = []
): Promise<T[]> => {
for (const promise of promises) {
values.push(await promise);
}
return values;
};
|