UNPKG

@bigmi/core

Version:

TypeScript library for Bitcoin apps.

30 lines 798 B
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