🌳
pt0/sharedF/moDashF/promF/moPromisesF.mts
1import * as _ from 'lodash-es'
3export const chainPromiseCalls = async <T, R>(
4 data: T[] | Record<string, T>,
5 fnc: (item: T, keyOrIndex: string | number) => Promise<R>,
6): Promise<R[] | Record<string, R>> => {
7 if (_.isPlainObject(data)) {
8 const ret: Record<string, R> = {}
9 for (const key in data as Record<string, T>) {
10 const val = (data as Record<string, T>)[key]
11 ret[key] = await fnc(val, key)
12 }
13 return ret
14 }
16 const ret: R[] = []
17 for(let ii = 0; ii < (data as T[]).length; ii++) {
18 const result = await fnc((data as T[])[ii], ii)
19 ret.push(result)
20 }
21 return ret