跳到主要内容

bolawen

2024年04月09日
柏拉文
越努力,越幸运

一、实现


function request() {
return new Promise((resolve, reject) => {
setTimeout(() => {
reject('ok');
}, 3000);
});
}

function requestRetry(reties = 3, delay = 500) {
return new Promise((resolve, reject) => {
const attempt = n => {
request()
.then(result => {
return result;
})
.then(result => {
resolve(result);
})
.catch(error => {
console.log('已重试', reties - n + 1, '次');
if (n <= 1) {
reject(error);
} else {
setTimeout(() => attempt(n - 1), delay);
}
});
};

attempt(reties);
});
}

二、测试


requestRetry(3, 500)
.then(res => {
console.log('res', res);
})
.catch(error => {
console.log('error', error);
});