【发布时间】:2022-01-05 09:14:43
【问题描述】:
我有以下功能非常好
do {
try {
const { assets } = await myApi(arg1, arg2, arg3); <<--
return assets;
} catch (err: any) {
if (err.response.status == 429) {
await sleep(300);
console.log('Throttle happened, sleeping for 300ms');
} else
throw (err);
}
}
while (true);
我想把这个方法通用化,用下面的方式调用
throttleHandler(myApi, ...args)
我进行了一些尝试,但打字稿抱怨它。我也不确定我是否做得正确。而且我不想使用any。我需要输入它。
type ThrottleHandler<TOut> = (...args: any) => TOut;
async function throttleHandler<T>(promiseFunction: ThrottleHandler<T>, ...args: any): Promise<T> {
console.log("args", args, ...args)
do {
try {
return await promiseFunction(...args);
} catch (err: any) {
if (err.response.status == 429) {
await sleep(300);
console.log('Throttle happened, sleeping for 300ms');
} else
throw (err);
}
}
while (true);
}
【问题讨论】:
标签: typescript typescript-typings typescript-generics