Promise 失败重试

function getData(){
 	let p = new Promise(function(resolve, reject){
 		setTimeout(function(){
 			var num = Math.ceil(Math.random()*20); //生成1-10的随机数
 			console.log('随机数生成的值:',num)
 			if(num<=10){
                 console.log('符合条件,值为'+num)
                 resolve(num);
 			}
 			else{
 				reject('数字大于10了执行失败');
 			}
 		}, 2000);
 	   })
 	   return p
}

/*@param
*getData  [执行函数]
* {
* time:失败的最大次数
* delay:每次失败后的延迟量
* }
*
*/
function myGetData(getData, time=5,delay=1000) {
    return new Promise(function(resolve, reject) {
       function attempt () {
        getData().then(resolve).catch(function(erro) {
        console.log(`还有 ${times} 次尝试`)
          if (0 == times) {
            reject(erro)//次数用完才真正返回错误
          } else {
            times--
            setTimeout(attempt(), delay)
          }
        })
      }
       attempt()
    })
  }

  // 执行函数,五次重试,每隔一秒执行一次
  
  myGetData(getData,5,1000)

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值