For typewritten folk (or es6 just remove the type syntax)
function mapAsync<T, U>(array: T[], callbackfn: (value: T, index: number, array: T[]) => Promise<U>): Promise<U[]> { return Promise.all(array.map(callbackfn)); } async function filterAsync<T>(array: T[], callbackfn: (value: T, index: number, array: T[]) => Promise<boolean>): Promise<T[]> { const filterMap = await mapAsync(array, callbackfn); return array.filter((value, index) => filterMap[index]); }
ES6
function mapAsync(array, callbackfn) { return Promise.all(array.map(callbackfn)); } async function filterAsync(array, callbackfn) { const filterMap = await mapAsync(array, callbackfn); return array.filter((value, index) => filterMap[index]); }
William lohan
source share