一体机倒计时实现

27 阅读1分钟

点击则重置倒计时

export default function useCountdown(endback = null, options = {}) {
    let {defaultValue = 120, immediate = true,interval=1000} = options
    const left = ref(defaultValue);
    const {pause, resume} = useIntervalFn(() => {
        left.value--;
        if (left.value <= 0) {
            pause();
            endback?.()
        }
    }, interval, {
        immediate
    });

    const cleanup = useEventListener(document, 'click', () => {
        left.value = defaultValue;
    })

    function clean(){
        pause();
        cleanup();
    }

    onBeforeUnmount(() => {
        clean()
    })

    function handleBeforeUnload(){
        clean()
        window.removeEventListener('beforeunload',handleBeforeUnload)
    }
    
    window.addEventListener('beforeunload', handleBeforeUnload);

    return {
        left,
        pause,
        resume,
    }
}