尝试创建一个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)
});
}
添加回答
举报
0/150
提交
取消