实现一个promise.retry
1,描述实现一个Promise.retry 函数,使得某个函数执行得结果如果是失败请求一定的次数之后再reject,失败后间隔某个时间段之后重试,尝试超过一定次数才真正的 reject
/*
*用随机数模拟数据数据请求
*/
function getRandom(){
return new Promise((resolve, reject) => {
let data = Math.random() * 10;
if(data > 5){
resolve(data)
}else{
reject(data)
}
})
}
Promise.retry = function(fn, time, delay){
return new Promise((resolve, reject) =>{
let index = 0;
let action = function(){
fn().then(res => {
console.log("第"+index +"次请求");
console.log("成功了当前值是" + res );
}).catch(err =>{
if(time == 0){
reject(err)
}else{
time--;
index++;
console.log("第"+index +"次请求");
console.log(err);
setTimeout(() => {
action()
}, delay);
}
})
}
action(resolve, reject)
})
}
本文详细介绍了如何使用Promise构造一个retry函数,该函数能在指定次数内重试失败的请求,并在每次重试前等待一定时间。通过随机数模拟数据请求,展示了Promise.retry的实际效果。
3180

被折叠的 条评论
为什么被折叠?



