reduce
Reduce an array with an async function
239 bytes
Usage
A reduce that handles callback functions that return a promise.
import * as import _
_ from 'radashi'
const const userIds: number[]
userIds = [1, 2, 3, 4]const const api: { users: { find(id: number): Promise<{ name: string; }>; };}
api = { users: { find(id: number): Promise<{ name: string; }>;}
users: { async function find(id: number): Promise<{ name: string;}>
find(id: number
id: number) { return { name: string
name: `person ${id: number
id}` } }, },}
const const users: {}
users = await import _
_.reduce<number, {}>(array: readonly number[], reducer: (acc: {}, item: number, index: number) => Promise<{}>, initialValue: {}): Promise<{}> (+1 overload)export reduce
An async reduce function. Works like the built-in Array.reduce
function but handles an async reducer function.
reduce( const userIds: number[]
userIds, async (acc: {}
acc, userId: number
userId) => { const const user: { name: string;}
user = await const api: { users: { find(id: number): Promise<{ name: string; }>; };}
api.users: { find(id: number): Promise<{ name: string; }>;}
users.function find(id: number): Promise<{ name: string;}>
find(userId: number
userId) return { ...acc: {}
acc, [userId: number
userId]: const user: { name: string;}
user, } }, {},) // { 1: { name: 'person 1' }, 2: { name: 'person 2' }, 3: { name: 'person 3' }, 4: { name: 'person 4' } }