/** | |
* Copyright (c) 2019, Microsoft Corporation (MIT License). | |
*/ | |
export function pollUntil(cb: () => boolean, timeout: number, interval: number): Promise<void> { | |
return new Promise<void>((resolve, reject) => { | |
const intervalId = setInterval(() => { | |
if (cb()) { | |
clearInterval(intervalId); | |
clearTimeout(timeoutId); | |
resolve(); | |
} | |
}, interval); | |
const timeoutId = setTimeout(() => { | |
clearInterval(intervalId); | |
if (cb()) { | |
resolve(); | |
} else { | |
reject(); | |
} | |
}, timeout); | |
}); | |
} | |