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

43 lines
1.1 KiB
TypeScript
Raw Normal View History

2025-06-03 16:24:58 +07:00
export function allSettled(
promises: Promise<any>[],
): Promise<PromiseSettledResult<any>[]> {
2025-05-10 18:18:08 +07:00
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)
})
}
2025-05-19 02:20:22 +07:00
export function sleepReject(ms: number, msg?: string): Promise<void> {
return new Promise((_, reject) => {
setTimeout(() => {
reject(msg)
}, ms)
})
2025-05-19 02:20:22 +07:00
}