es-promise-ext
Version:
Native promise extensions for javascript and typescript.
87 lines (86 loc) • 2.59 kB
TypeScript
/**
* Creates a Promise that is resolved with an array of results when all of the provided Promises resolve, or rejected when any Promise is rejected.
*
* @param {Iterable<W | PromiseLike<W>>} values
* - An iterable of Promises.
*
* @return {Promise<{ [key in keyof W]: Awaited<W[key]>; }>}
* A new Promise.
*
* @example
* promiseAllWith(
* new Set([
* Promise.resolve(1),
* Promise.resolve(2),
* Promise.resolve(3)
* ])
* )
* // return [1,2,3] in the subsequent promise
*/
export default function promiseAllWith<W>(values: Iterable<W | PromiseLike<W>>): Promise<Awaited<W>[]>;
/**
* Creates a Promise that is resolved with an array of results when all of the provided Promises resolve, or rejected when any Promise is rejected.
*
* @param {U} values
* - An array of Promises.
*
* @return {Promise<{ [key in keyof U]: Awaited<U[key]>; }>}
* A new Promise.
*
* @example
* promiseAllWith(
* [
* Promise.resolve(1),
* Promise.resolve(2),
* Promise.resolve(3)
* ]
* )
* // return [1,2,3] in the subsequent promise
*/
export default function promiseAllWith<U extends readonly unknown[] | []>(values: U): Promise<{
[key in keyof U]: Awaited<U[key]>;
}>;
/**
* Creates a Promise that is resolved with an object of results when all of the provided Promises resolve, or rejected when any Promise is rejected.
*
* @param {V} values
* - A object of Promises.
*
* @return {Promise<{ [key in keyof V]: Awaited<V[key]>; }>}
* A new Promise.
*
* @example
* promiseAllWith(
* {
* someNumber: Promise.resolve(1),
* someString: Promise.resolve('test'),
* someBoolean: Promise.resolve(true)
* }
* )
* // return the resolved object in the subsequent promise
*/
export default function promiseAllWith<V extends Record<string, Promise<unknown> | unknown>>(values: V): Promise<{
[key in keyof V]: Awaited<V[key]>;
}>;
/**
* Creates a Promise that is resolved with a Map of results when all of the provided Promises resolve, or rejected when any Promise is rejected.
*
* @param {Map<any, Promise<unknown> | unknown>} values
* - A map of Promises.
*
* @return {Promise<Map<any, any>>}
* A new Promise.
*
* @example
* promiseAllWith(
* new Map(
* Object.entries({
* someNumber: Promise.resolve(1),
* someString: Promise.resolve('test'),
* someBoolean: Promise.resolve(true)
* })
* )
* )
* // return the resolved map in the subsequent promise
*/
export default function promiseAllWith(values: Map<any, Promise<unknown> | unknown>): Promise<Map<any, any>>;