Files
certd/packages/core/basic/src/utils/util.promise.ts
T

51 lines
1.1 KiB
TypeScript
Raw Normal View History

2024-07-18 21:10:13 +08:00
import { logger } from "./util.log.js";
2023-07-03 11:16:46 +08:00
export function TimeoutPromise(callback: () => Promise<void>, ms = 30 * 1000) {
let timeout: any;
return Promise.race([
callback(),
new Promise((resolve, reject) => {
timeout = setTimeout(() => {
reject(new Error(`Task timeout in ${ms} ms`));
}, ms);
}),
]).finally(() => {
clearTimeout(timeout);
});
}
2024-07-18 21:10:13 +08:00
export function safePromise<T>(callback: (resolve: (ret: T) => void, reject: (ret: any) => void) => void): Promise<T> {
return new Promise((resolve, reject) => {
try {
callback(resolve, reject);
} catch (e) {
logger.error(e);
reject(e);
}
});
}
2024-10-05 01:46:25 +08:00
export function promisify(func: any) {
return function (...args: any) {
return new Promise((resolve, reject) => {
try {
func(...args, (err: any, data: any) => {
if (err) {
reject(err);
} else {
resolve(data);
}
});
} catch (e) {
reject(e);
}
});
};
}
export const promises = {
TimeoutPromise,
safePromise,
2024-10-05 01:46:25 +08:00
promisify,
};