revenge-bundle-next/lib/utils/src/promises.ts

31 lines
905 B
TypeScript
Raw Normal View History

2025-05-10 18:18:08 +07:00
export function allSettled(promises: Promise<any>[]): Promise<PromiseSettledResult<any>[]> {
const mapped = promises.map(p =>
p instanceof Promise
? p
.then(
value =>
({
status: 'fulfilled',
value,
}) as const,
)
.catch(
reason =>
({
status: 'rejected',
reason,
}) as const,
)
: ({
status: 'fulfilled',
value: p,
} as const),
2025-05-10 18:18:08 +07:00
)
return Promise.all(mapped)
}
export function sleep(ms: number): Promise<void> {
return new Promise(resolve => setTimeout(resolve, ms))
}