Files
payloadcms/test/helpers/executePromises.ts
Alessio Gravili 65932b65d2 chore: fields test: fix Mongo write errors during seed by making create calls run sequentially.
Adds easy way of toggling between parallel or sequential runs, and optimized performance of create calls
2024-03-25 20:39:56 -04:00

22 lines
796 B
TypeScript

/**
* Allows for easy toggling between resolving promises sequentially vs in parallel
*/
export async function executePromises<T extends Array<() => Promise<any>>>(
promiseFns: T,
parallel: boolean = false,
): Promise<{ [K in keyof T]: Awaited<ReturnType<T[K]>> }> {
if (parallel) {
// Parallel execution with Promise.all and maintain proper typing
return Promise.all(promiseFns.map((promiseFn) => promiseFn())) as Promise<{
[K in keyof T]: Awaited<ReturnType<T[K]>>
}>
} else {
// Sequential execution while maintaining types
const results: Awaited<ReturnType<T[number]>>[] = []
for (const promiseFn of promiseFns) {
results.push(await promiseFn())
}
return results as unknown as Promise<{ [K in keyof T]: Awaited<ReturnType<T[K]>> }>
}
}