File size: 582 Bytes
6778ee0 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | 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)
}
})
}
|