retry-promise-func
Version:
retry-promise-func是一个用于在失败时重试Promise调用的工具。
32 lines (30 loc) • 1.03 kB
JavaScript
/**
* 尝试多次调用一个函数,如果失败则重试,直到成功或超过重试次数
*
* @param fn 需要调用的函数,它应该返回一个Promise
* @param params 调用函数时使用的参数
* @param times 最大重试次数,默认为40次
* @param delay 每次重试之间的延迟时间(毫秒),默认为1600ms
*
* @returns 当函数调用成功时解决Promise,否则拒绝Promise
*/
const retry = async (fn, params = {}, times = 40, delay = 1600) => {
return new Promise((resolve, reject) => {
const tFn = function () {
fn(params)
.then(resolve)
.catch((e) => {
if (times-- > 0) {
console.log(`还有${times}次机会`);
setTimeout(tFn, delay);
}
else {
reject(e);
}
});
};
return tFn();
});
};
export { retry };
//# sourceMappingURL=index.esm.js.map