diff --git a/ts/index.ts b/ts/index.ts index 5c849c0..a40df85 100644 --- a/ts/index.ts +++ b/ts/index.ts @@ -42,21 +42,21 @@ export class Deferred { } } -export let defer = () => { +export const defer = () => { return new Deferred(); }; /** * Creates a new resolved promise for the provided value. */ -export let resolvedPromise = (value?: T): Promise => { +export const resolvedPromise = (value?: T): Promise => { return Promise.resolve(value); }; /** * Creates a new rejected promise for the provided reason. */ -export let rejectedPromise = err => { +export const rejectedPromise = (err) => { return Promise.reject(err); }; @@ -64,16 +64,31 @@ interface IAsyncFunction { (someArg: T): Promise; } -export let map = async (inputArg: T[], functionArg: IAsyncFunction) => { - let promiseArray: Promise[] = []; - let resultArray = []; - for (let item of inputArg) { - let promise: Promise = functionArg(item); +/** + * accepts an array of inputs and a function that accepts the input. + * runs all items with the function and returns the result array when all items have run + * @param inputArg + * @param functionArg + */ +export const map = async (inputArg: T[], functionArg: IAsyncFunction) => { + const promiseArray: Promise[] = []; + const resultArray = []; + for (const item of inputArg) { + const promise: Promise = functionArg(item); promiseArray.push(promise); - promise.then(x => { + promise.then((x) => { resultArray.push(x); }); } await Promise.all(promiseArray); return resultArray; }; + +export const timeoutWrap = (ms, promise) => { + return new Promise((resolve, reject) => { + setTimeout(() => { + reject(new Error('timeout')); + }, ms); + promise.then(resolve, reject); + }); +};