Pomise 失败重试

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)

已标记关键词 清除标记
©️2020 CSDN 皮肤主题: 深蓝海洋 设计师:CSDN官方博客 返回首页