125 字
1 分钟
手写自动重试n次

请求失败的时候自动重试,这里默认2次重试

function retry(promiseFn, times = 2) {
let count = 0;
function handleRetry(res, rej) {
return new Promise((resolve = res, reject = rej) => {
promiseFn()
.then((data) => {
resolve(data);
})
.catch((err) => {
if (count === times || !times) {
reject(err);
} else {
count++;
handleRetry(resolve, reject);
}
});
});
}
return handleRetry();
}
let mark = 0;
function test() {
return new Promise((resolve, reject) => {
setTimeout(() => {
mark++;
if (mark === 10) {
resolve("成功resolve");
console.log("成功了");
} else {
reject("error");
console.log("失败了");
}
}, 500);
});
}
retry(test, 5)
.then((data) => {
console.log(data);
})
.catch((err) => {
console.log(err);
});
手写自动重试n次
https://nollieleo.github.io/posts/手写自动重试n次/
作者
翁先森
发布于
2023-02-24
许可协议
CC BY-NC-SA 4.0