useTimeoutRef.ts 611 字节
Newer Older
V
vben 已提交
1
import { Ref, ref } from 'vue';
陈文彬 已提交
2
import { tryOnUnmounted } from '/@/utils/helper/vueHelper';
V
vben 已提交
3
export type TimeoutResult = [Ref<boolean>, Fn<void>, Fn<void>];
陈文彬 已提交
4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
export function useTimeoutRef(wait: number): TimeoutResult {
  const readyRef = ref(false);

  let timer: ReturnType<typeof setTimeout> | undefined;
  function clear(): void {
    readyRef.value = false;
    timer && window.clearTimeout(timer);
  }
  function openTimer(): void {
    clear();
    timer = setTimeout(() => {
      readyRef.value = true;
    }, wait);
  }

  openTimer();

  tryOnUnmounted(clear);

  return [readyRef, clear, openTimer];
}