简介
Retimer 是一个轻量级、易用的 JavaScript 库,用于创建计时器和执行 time-based 操作。它支持时间单位的转换和时间序列的遍历,同时提供了可扩展的组件和钩子函数。
安装
要安装 Retimer,您需要先安装 Node.js 和 npm 。然后在终端中运行以下命令:
npm install retimer
基本用法
创建计时器
-- -------------------- ---- ------- ------ - ----------- - ---- ---------- ----- ----- - ------------- --------- ----- --------- ------ -- ----------------- -------- ------------ ------- -- -- ------------------ -------- --- --------------
上述代码创建了一个计时器,其持续时间为 5000 毫秒。每当计时器更新时,onUpdate
回调函数将被调用,同时将耗费的时间作为参数传递给该函数。当计时器结束时,将调用 onDone
回调函数。
时间序列遍历
-- -------------------- ---- ------- ------ - -------------- - ---- ---------- ----- -------- - ---------------- - --------- ----- ------- -- -- ----------------- ----- -- - --------- ----- ------- -- -- ----------------- ----- -- - --------- ----- ------- -- -- ----------------- ----- -- --- -----------------
上述代码创建了一个时间序列,其包含三个步骤,每个步骤的持续时间分别为 1000 毫秒、2000 毫秒和 3000 毫秒。onTick
回调函数将在每个步骤开始时被调用。
时间单位转换
Retimer 支持以下时间单位的转换:
"ns"
:纳秒"us"
:微秒"ms"
:毫秒"s"
:秒"m"
:分钟"h"
:小时
import { convertTime } from 'retimer'; console.log(convertTime(5000, 'ms', 's')); // 5 console.log(convertTime(2, 'm', 's')); // 120
上述代码将 5000 毫秒转换为 5 秒,并将 2 分钟转换为 120 秒。
高级用法
自定义组件
您可以使用 addComponent
方法添加自定义组件。该方法需要两个参数:组件名称和组件实现。
-- -------------------- ---- ------- ------ - ----------- - ---- ---------- ----- ----------- - - ----- --------------- ----- -- -- --------------- --------- --------------- ------- ------- -- --------------- --------- ------- ---- ----- ------------- -- ------------- --------- ----- ----------- -------------- -----------
上述代码添加了一个名为 my-component
的自定义组件。当计时器初始化时,init
方法将被调用。当计时器更新时,update
方法将被调用,并传递自上次更新以来经过的时间(即 delta
)作为参数。
钩子函数
您可以使用钩子函数来拦截计时器的行为。Retimer 支持以下钩子函数:
onStart
:在计时器开始时执行。onPause
:在计时器暂停时执行。onResume
:在计时器继续运行时执行。onStop
:在计时器停止时执行。onUpdate
:在计时器更新时执行。onDone
:在计时器完成后执行。
-- -------------------- ---- ------- ------ - ----------- - ---- ---------- ------------- --------- ----- -------- -- -- ------------------ ----------- -------- -- -- ------------------ ---------- --------- -- -- ------- - ----------------------------------------------------------- -------- ----------------------------------------------------------------------------------