mirror of
https://github.com/chenasraf/megahal.js.git
synced 2026-05-18 01:49:02 +00:00
33 lines
677 B
TypeScript
33 lines
677 B
TypeScript
export function retry(fn: () => unknown, retries = 3): unknown {
|
|
let error: unknown
|
|
for (let i = 0; i < retries; ++i) {
|
|
try {
|
|
console.log('retrying', i)
|
|
return fn()
|
|
} catch (err) {
|
|
error = err
|
|
}
|
|
}
|
|
throw error
|
|
}
|
|
|
|
export function retryWithCondition(
|
|
fn: () => unknown,
|
|
condition: (_result: unknown) => boolean,
|
|
retries = 3,
|
|
): unknown {
|
|
let error: unknown
|
|
for (let i = 0; i < retries; ++i) {
|
|
try {
|
|
const res = fn()
|
|
if (condition(res)) {
|
|
return res
|
|
}
|
|
error = new Error(`Condition not met: ${res}`)
|
|
} catch (err) {
|
|
error = err
|
|
}
|
|
}
|
|
throw error || new Error('Condition not met')
|
|
}
|