es-promise-ext
Version:
Native promise extensions for javascript and typescript.
96 lines (95 loc) • 3.33 kB
TypeScript
declare global {
interface Promise<T> {
/**
* 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<Awaited<W>[]>}
* A new Promise.
*
* @example
* Promise.resolve()
* .all(
* new Set([
* Promise.resolve(1),
* Promise.resolve(2),
* Promise.resolve(3)
* ])
* )
* // return [1,2,3] in the subsequent promise
*/
all<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<{ -readonly [P in keyof U]: Awaited<U[P]> }>}
* A new Promise.
*
* @example
* Promise.resolve()
* .all(
* [
* Promise.resolve(1),
* Promise.resolve(2),
* Promise.resolve(3)
* ]
* )
* // return [1,2,3] in the subsequent promise
*/
all<U extends (readonly unknown[] | [])>(values: U): Promise<{
-readonly [key in keyof U]: Awaited<U[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
* Promise.resolve()
* .all(
* new Map(
* Object.entries({
* someNumber: Promise.resolve(1),
* someString: Promise.resolve('test'),
* someBoolean: Promise.resolve(true)
* })
* )
* )
* // return the resolved map in the subsequent promise
*/
all(values: Map<any, Promise<unknown> | unknown>): Promise<Map<any, any>>;
/**
* Creates a Promise that is resolved with a 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
* Promise.resolve()
* .all(
* {
* someNumber: Promise.resolve(1),
* someString: Promise.resolve('test'),
* someBoolean: Promise.resolve(true)
* }
* )
* // return the resolved object in the subsequent promise
*/
all<V extends Record<string, Promise<unknown> | unknown>>(values: V): Promise<{
[key in keyof V]: Awaited<V[key]>;
}>;
}
}
export {};