为了账号安全,请及时绑定邮箱和手机立即绑定

自定义重试功能

自定义重试功能

莫回无 2023-03-24 15:42:33
尝试创建一个retry返回函数的函数,该函数调用回调函数并从传递其参数的回调函数返回值并捕获错误。如果捕获到错误,它应该返回带有 catch 的回调函数。如果错误数超过计数,则抛出错误。这是到目前为止所做的:const retry = (count, callback) => {    let attempts = 1;    const _retry = async (...args) => callback(...args)        .catch(err => {            if (attempts > count) throw err            attempts++            return _retry(...args)        });    return _retry}调用时出现问题:var r = Math.random().toString(36).slice(2)var arg = (n) => async (...v) =>    --n < 0 ? v : Promise.reject(Error(`>>> x:${v}`))    await retry(3, arg(2))(r)
查看完整描述

1 回答

?
慕后森

TA贡献1802条经验 获得超5个赞

由于 async 关键字,在我看来重试现在会返回一个 Promise。尝试从重试定义中删除 async 关键字并使 _retry 函数异步:


const retry = (count, callback) => {

    let attempts = 1;

    return _retry = async (...args) => callback(...args)

        .catch(err => {

            if (attempts > count) throw err

            attempts++

            return _retry(...args)

        });

}


查看完整回答
反对 回复 2023-03-24
  • 1 回答
  • 0 关注
  • 71 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信