[英]Custom Retry Function
嘗試創建一個函數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)
在我看來,由於 async 關鍵字, retry 現在返回一個 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)
});
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.