UNPKG

vue-hooks-plus

Version:
42 lines (41 loc) 929 B
"use strict"; const vue = require("vue"); function useInterval(fn, delay, options) { const immediate = options == null ? void 0 : options.immediate; const fnRef = vue.ref(fn); const timerRef = vue.ref(null); const setupInterval = () => { if (vue.isRef(delay)) { if (typeof delay.value !== "number" || delay.value < 0) return; } else { if (typeof delay !== "number" || delay < 0) return; } if (immediate) { fnRef.value(); } const _deply = vue.unref(delay); timerRef.value = setInterval(() => { fnRef.value(); }, _deply); }; const clear = () => { if (timerRef.value) { clearInterval(timerRef.value); } }; const restart = () => { clear(); setupInterval(); }; vue.watchEffect((onInvalidate) => { setupInterval(); onInvalidate(clear); }); return { clear, restart }; } module.exports = useInterval;