前端基础:可以重试的请求方法

44 阅读1分钟

需求:当一个请求失败的时候最多可以重试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)
    })