Files
bitvid/tests/test-helpers/wait-for.mjs
T
2026-01-27 02:59:39 +00:00

21 lines
534 B
JavaScript

export async function waitFor(callback, { timeout = 2000, interval = 50, message = "waitFor timed out" } = {}) {
const start = Date.now();
let lastError;
while (true) {
try {
const result = await callback();
return result;
} catch (error) {
lastError = error;
}
if (Date.now() - start > timeout) {
const errorMsg = lastError ? `${message}: ${lastError.message}` : message;
throw new Error(errorMsg);
}
await new Promise((resolve) => setTimeout(resolve, interval));
}
}