2025-05-10 18:18:08 +07:00
|
|
|
export function allSettled(promises: Promise<any>[]): Promise<PromiseSettledResult<any>[]> {
|
|
|
|
|
const mapped = promises.map(p =>
|
2025-05-18 22:24:48 +07:00
|
|
|
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)
|
|
|
|
|
}
|
2025-05-18 22:24:48 +07:00
|
|
|
|
|
|
|
|
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))
|
|
|
|
|
}
|