Use promise to implement request retry: if the request fails, the request will be resent after a delay of n seconds, with a maximum number of retries.
// getData 请求函数
// times 最大重试次数
// delay 重试延迟时间
function retry(getData, times, delay) {
return new Promise((resolve, reject) => {
function attempt() {
getData.then(resolve).catch((err) => {
console.log(`还有${
times}次机会`)
if(times == 0) {
reject(err)
} else {
times--
setTimeout(attempt(), delay)
}
})
}
attempt()
})
}