下例實現(xiàn)重試10次請求:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Promis example</title>
<script>
function startapi(reqId, resolve, reject){
let timers=0;
return function apirequest(){
let arg = arguments[0];
let a = new Promise((res,rej)=>{
setTimeout(()=>{
res('成功返回數(shù)據(jù)')
}, 100)
});
a.then(()=>{
timers++;
if(timers>10){
return resolve('over');
}
console.log('timers:',timers, ' id:', reqId);
// if(timers==3){
// return reject('第三個失敗')
// }
apirequest(timers)
}).catch(err=>{
apirequest(timers)
console.log(err)
})
}
}
function handle(){
return new Promise((res,rej)=>{
let newreq = startapi('1122', res, rej);
newreq(0);
})
}
handle().then(res=>{
console.log('handle:', res);
}).catch(err=>{
console.log('handle err:', err);
});
</script>
</head>
<body>
</body>
</html>