mirror of
https://github.com/PR0M3TH3AN/bitvid.git
synced 2026-10-27 07:52:24 +00:00
21 lines
534 B
JavaScript
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));
|
|
}
|
|
}
|