UNPKG

@thy-rathana/nuxt-infinite-scroll

Version:

Look at the [Nuxt documentation](https://nuxt.com/docs/getting-started/introduction) to learn more.

39 lines (37 loc) 868 B
// composables/useTimer.ts import { onBeforeUnmount } from "vue"; var useTimer = (autoClearSideEffect = true) => { const timers = /* @__PURE__ */ new Set(); const intervals = /* @__PURE__ */ new Map(); const addTimer = (fn, delay) => { const timer = setTimeout(() => { fn(); timers.delete(timer); }, delay); timers.add(timer); }; onBeforeUnmount(() => { if (autoClearSideEffect) { timers.forEach(clearTimeout); timers.clear(); intervals.forEach(clearInterval); intervals.clear(); } }); const addInterval = (fn, interval, key) => { if (!key || !intervals.has(key)) { const timer = setInterval(() => { fn(); }, interval); intervals.set(key ?? Date.now().toString(), timer); } }; return { addInterval, addTimer, timers }; }; export { useTimer };