Interval的封装 使用

70 阅读1分钟
/**
 * @return {*}
 * @description:  Interval的封装 使用
 *   import { createScheduled, clearScheduled } from '@/hooks/useTimer'
 *   callback() 调用的函数   'timer' 定义定时器名称   3000  刷新的时间
 *    onMounted(() => {
        callback()
        createScheduled(
          'timer',
          () => {
            callback()
          },
          3000
        )
      })
      //销毁定时器
      onBeforeUnmount(() => {
        clearScheduled('timer')
      })
 * 
 * 
 */
//定义空记录,用于存放参数信息
const timerObj = {};
//创建定时器,默认3秒刷新一次
export function createScheduled(
  timerId,
  callback,
  delay = 3000
) {
  clearInterval(timerObj[timerId]);
  //setInterval()具有返回值,存放在记录里
  timerObj[timerId] = setInterval(() => {
    callback && callback()
  }, delay);
}

// 清除指定定时器
export function clearScheduled(timerId) {
  clearInterval(timerObj[timerId]);
}

// 清除所有定时器
export function clearAllScheduled() {
  Object.keys(timerObj).forEach((key) => {
    clearInterval(timerObj[key]);
  });
}