analytics/tracker/installation_support/run-check.js

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)
}
})
}