18 lines
582 B
JavaScript
18 lines
582 B
JavaScript
export async function runThrottledCheck(checkFn, { timeout, interval }) {
|
|
return runCheckRecursive(checkFn, timeout, interval, 1)
|
|
}
|
|
|
|
async function runCheckRecursive(checkFn, timeout, interval, iteration) {
|
|
return new Promise((resolve) => {
|
|
if (iteration * interval >= timeout) {
|
|
resolve(checkFn({ timeout: true }))
|
|
} else if (checkFn({ timeout: false }) !== 'continue') {
|
|
resolve(checkFn({ timeout: false }))
|
|
} else {
|
|
setTimeout(() => {
|
|
resolve(runCheckRecursive(checkFn, timeout, interval, iteration + 1))
|
|
}, interval)
|
|
}
|
|
})
|
|
}
|