Skip to content

计时器 (Timer)

实例方法

ctx.setTimeout(callback, delay)

  • callback: Function 回调函数
  • delay: number 延迟时间 (毫秒)
  • 返回值: () => void

在指定的延迟时间后执行回调函数。返回的函数可以用于取消此计时器。

ctx.setInterval(callback, delay)

  • callback: Function 回调函数
  • delay: number 延迟时间 (毫秒)
  • 返回值: () => void

在指定的延迟时间后执行回调函数,然后每隔指定的延迟时间重复执行。返回的函数可以用于取消此计时器。

ctx.sleep(delay)

  • delay: number 延迟时间 (毫秒)
  • 返回值: Promise<void>

等待指定的延迟时间。如果在此期间插件被停用,将会抛出一个错误。

ctx.throttle(callback, delay, noTrailing?)

  • callback: F extends (...args: any[]) => void 回调函数
  • delay: number 延迟时间 (毫秒)
  • noTrailing: boolean 是否禁用尾随调用
  • 返回值: WithDispose<F>

返回一个函数,该函数在指定的周期内最多执行一次。

具体表现为,此函数被调用后会立即执行,并在接下来的 delay 毫秒内忽略所有调用。

默认情况下,如果在最后一次实际执行后的一个延迟周期内再次调用返回的函数,则会在此延迟周期结束时再次执行 (即尾随调用)。将 noTrailing 设置为 true 可禁用此行为。

返回函数的 dispose() 方法可用于取消此计时器。此后所有调用都将被忽略。

ctx.debounce(callback, delay)

  • callback: F extends (...args: any[]) => void 回调函数
  • delay: number 延迟时间 (毫秒)
  • 返回值: WithDispose<F>

返回一个函数,该函数会忽略小于指定间隔的所有高频调用。

具体表现为,此函数被调用后,不会立即执行,而是会等待 delay 毫秒。如果在此期间再次调用返回的函数,则会重新计时。直到 delay 毫秒内没有调用,此函数才会执行。

返回函数的 dispose() 方法可用于取消此计时器。此后所有调用都将被忽略。