UNPKG

@fe6/water-pro

Version:

An enterprise-class UI design language and Vue-based implementation

57 lines (50 loc) 1.19 kB
/** @format */ import { ref, watch } from 'vue'; import { isFunction } from '@fe6/shared'; import { tryOnUnmounted } from '../vue'; import warning from '../warning'; export function useTimeoutFn(handle, wait) { var _native = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false; if (!isFunction(handle)) { warning('handle 参数是必须是 Function 类型!'); } var _useTimeoutRef = useTimeoutRef(wait), readyRef = _useTimeoutRef.readyRef, stop = _useTimeoutRef.stop, start = _useTimeoutRef.start; if (_native) { handle(); } else { watch(readyRef, function (maturity) { maturity && handle(); }, { immediate: false }); } return { readyRef: readyRef, stop: stop, start: start }; } export function useTimeoutRef(wait) { var readyRef = ref(false); var timer; function stop() { readyRef.value = false; timer && window.clearTimeout(timer); } function start() { stop(); timer = setTimeout(function () { readyRef.value = true; }, wait); } start(); tryOnUnmounted(stop); return { readyRef: readyRef, stop: stop, start: start }; }