Promise失败重试,可指定重试次数
//模拟异步请求
function axiosFn() {
return new Promise((resolve, reject) => {
const flge = Math.random(); //随机值
setTimeout(() => {
//大于0.7就是成功
if (flge > 0.7) {
return resolve(flge);
} else {
return reject(flge);
}
}, 1000)
})
}
/**
* @description: promise 失败重试方法
* @param {*} fn 异步函数
* @param {*} times 次数
* @Date: 2022-02-20 22:47:54
* @Author: mulingyuer
*/
Promise.retry = function(fn, times) {
return new Promise(async (resolve, reject) => {
while (times--) {
try {
const res = await fn();
//请求成功,结束while循环
return resolve(res);;
} catch (error) {
//请求失败
if (times > 0) {
console.log(`请求失败正在重试,还剩${times}次,错误信息为:${error}`);
} else {
console.log(`请求失败,重试${times}次后,还是失败,错误信息为:${error}`);
return reject(error);
}
}
}
})
}
//测试
Promise.retry(axiosFn, 3).then(res => {
console.log(`获得的数据为:${res}`);
}).catch(error => {
console.log(`失败了,错误信息为:${error}`);
});
分类:
JavaScript
标签:
javascriptpromise重试失败重试
版权申明
本文系作者 @木灵鱼儿 原创发布在木灵鱼儿站点。未经许可,禁止转载。
全部评论 1
xiaoku
Google Chrome Android