@bigmi/core
Version:
TypeScript library for Bitcoin apps.
30 lines • 798 B
JavaScript
import { sleep } from './sleep.js';
/**
* @description Polls a function at a specified interval.
*/
export function poll(fn, { emitOnBegin, initialWaitTime, interval }) {
let active = true;
const unwatch = () => {
active = false;
};
const watch = async () => {
let data;
if (emitOnBegin) {
data = await fn({ unpoll: unwatch });
}
const initialWait = (await initialWaitTime?.(data)) ?? interval;
await sleep(initialWait);
const poll = async () => {
if (!active) {
return;
}
await fn({ unpoll: unwatch });
await sleep(interval);
poll();
};
poll();
};
watch();
return unwatch;
}
//# sourceMappingURL=poll.js.map