Press n or j to go to the next uncovered block, b, p or k for the previous block.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | 1x 2x 2x 1x 1x 2x 2x | import { isPromiseLike } from './isPromiseLike' /** * 准备数据。 * * @param getter 数据源 */ export function prepareData<T extends Record<string, () => any>>( getter: T, ): Promise< { [K in keyof T]: Awaited<ReturnType<T[K]>> } > { return Promise.all<[string, any]>( Object.keys(getter).map(key => { const v = getter[key]() return isPromiseLike(v) ? v.then((value: any) => [key, value]) : ([key, v] as any) }), ).then<any>(list => list.reduce<any>((res, item) => { res[item[0]] = item[1] return res }, {}), ) } |