Skip to content

@utilslib/core/createCancelableTimer


创建一个可取消的倒计时执行器


createCancelableTimer

函数签名

typescript
function createCancelableTimer(callback: AnyFunction, delay: number, onCancel: AnyFunction = NOOP)

描述

创建一个可取消的倒计时执行器

参数

参数名类型可选默认值描述
callbackAnyFunction--
delaynumber--
onCancelAnyFunctionNOOP-

返回值

- 返回一个取消函数

点击查看源码
js
/**
 * 空函数,用于占位符,不执行任何操作
 */
const NOOP = () => {};
/**
 * 创建一个可取消的倒计时执行器
 * @param {Function} callback - 倒计时结束后执行的回调函数
 * @param {number} delay - 倒计时时间(毫秒)
 * @returns {Function} - 返回一个取消函数
 */
export function createCancelableTimer(callback, delay, onCancel = NOOP) {
  let timer = setTimeout(callback, delay);
  return () => {
    if (!timer) return;
    clearTimeout(timer);
    timer = null;
    onCancel();
  };
}
ts
export type AnyFunction = (...args: any) => any;

/**
 * 空函数,用于占位符,不执行任何操作
 */
const NOOP = () => {};

/**
 * 创建一个可取消的倒计时执行器
 * @param {Function} callback - 倒计时结束后执行的回调函数
 * @param {number} delay - 倒计时时间(毫秒)
 * @returns {Function} - 返回一个取消函数
 */
export function createCancelableTimer(
  callback: AnyFunction,
  delay: number,
  onCancel: AnyFunction = NOOP,
) {
  let timer: number | null = setTimeout(callback, delay);
  return () => {
    if (!timer) return;
    clearTimeout(timer);
    timer = null;
    onCancel();
  };
}

如有错误,请提交issue :::