(pred, waitOverride = MIN_WAIT, maxWaits = MAX_WAITS)
| 105 | } |
| 106 | |
| 107 | export async function untilTrue(pred, waitOverride = MIN_WAIT, maxWaits = MAX_WAITS) { |
| 108 | if ( waitOverride < 0 ) { |
| 109 | maxWaits = -1; |
| 110 | waitOverride = MIN_WAIT; |
| 111 | } |
| 112 | let waitCount = 0; |
| 113 | let resolve; |
| 114 | const pr = new Promise(res => resolve = res); |
| 115 | setTimeout(checkPred, 0); |
| 116 | return pr; |
| 117 | |
| 118 | async function checkPred() { |
| 119 | DEBUG.checkPred && console.log('Checking', pred.toString()); |
| 120 | if ( await pred() ) { |
| 121 | return resolve(true); |
| 122 | } else { |
| 123 | waitCount++; |
| 124 | if ( waitCount < maxWaits || maxWaits < 0 ) { |
| 125 | setTimeout(checkPred, waitOverride); |
| 126 | } else { |
| 127 | resolve(false); |
| 128 | } |
| 129 | } |
| 130 | } |
| 131 | } |
no outgoing calls
no test coverage detected