需求:当一个请求失败的时候最多可以重试n次,重试n次也失败以后,判定这个请求是真正的失败了
思路:这里我们只需要关注失败的情况,成功直接返回结果就行了,每次失败的时候再次调用自己,同时传入的maxCount-1即可,直到耗尽所有的失败次数,才执行reject
/**
* @param {string} url 请求地址
* @param{number} maxCount 最大重试次数
*
*/
function request(url, maxCount = 5) {
return fetch(url).catch(err => {
maxCount <= 0 ? Promise.reject(err) : request(url, maxCount - 1)
})
}
request('http://xxx.com', 6)
.then(res => {
console.log(res)
})
.catch(err => {
console.log(err)
})