木灵鱼儿

木灵鱼儿

阅读:1183

最后更新:2022/02/21/ 22:30:31

Promise失败重试,可指定重试次数

//模拟异步请求
function axiosFn() {
    return new Promise((resolve, reject) => {
        const flge = Math.random(); //随机值
        setTimeout(() => {
            //大于0.7就是成功
            if (flge > 0.7) {
                return resolve(flge);
            } else {
                return reject(flge);
            }
        }, 1000)
    })
}

/**
 * @description: promise 失败重试方法
 * @param {*} fn 异步函数
 * @param {*} times 次数
 * @Date: 2022-02-20 22:47:54
 * @Author: mulingyuer
 */
Promise.retry = function(fn, times) {
    return new Promise(async (resolve, reject) => {
        while (times--) {
            try {
                const res = await fn();
                //请求成功,结束while循环
                return resolve(res);;
            } catch (error) {
                //请求失败
                if (times > 0) {
                    console.log(`请求失败正在重试,还剩${times}次,错误信息为:${error}`);
                } else {
                    console.log(`请求失败,重试${times}次后,还是失败,错误信息为:${error}`);
                    return reject(error);

                }
            }
        }
    })
}

//测试
Promise.retry(axiosFn, 3).then(res => {
    console.log(`获得的数据为:${res}`);
}).catch(error => {
    console.log(`失败了,错误信息为:${error}`);
});

版权申明

本文系作者 @木灵鱼儿 原创发布在木灵鱼儿 - 有梦就能远航站点。未经许可,禁止转载。

关于作者

站点职位 博主
获得点赞 9
文章被阅读 1183

相关文章

目录树