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