const dynamicIntervals = new Map>(); export function dynamicInterval( key: string, callback: () => void, period: number, ) { // Clear an existing interval for this key, if any. if (dynamicIntervals.has(key)) { clearTimeout(dynamicIntervals.get(key)); } // Set up a new dynamic interval. const id = setTimeout(() => { callback(); dynamicInterval(key, callback, period); }, period); dynamicIntervals.set(key, id); } export function resetDynamicInterval(key: string) { dynamicIntervals.delete(key); }