??????????????????????????????? H5/????? Co-authored-by: Cursor <cursoragent@cursor.com>
25 lines
630 B
TypeScript
25 lines
630 B
TypeScript
/** Promise 超时包装:超时后 reject,不取消原任务。 */
|
||
export function withTimeout<T>(
|
||
promise: Promise<T>,
|
||
ms: number,
|
||
message = 'TIMEOUT',
|
||
): Promise<T> {
|
||
return new Promise<T>((resolve, reject) => {
|
||
const timer = window.setTimeout(() => reject(new Error(message)), ms);
|
||
promise.then(
|
||
(value) => {
|
||
window.clearTimeout(timer);
|
||
resolve(value);
|
||
},
|
||
(err) => {
|
||
window.clearTimeout(timer);
|
||
reject(err);
|
||
},
|
||
);
|
||
});
|
||
}
|
||
|
||
export function isTimeoutError(error: unknown): boolean {
|
||
return error instanceof Error && error.message === 'TIMEOUT';
|
||
}
|