# timer-manager-lib **Repository Path**: DieHunter/timer-manager-lib ## Basic Information - **Project Name**: timer-manager-lib - **Description**: 基于 JS 实现的一个定时任务管理器,可以在 Node 和浏览器环境下使用,你可以轻松地添加、删除、启动、停止和清除定时器,使用同一个 interval 管理全局的 timer,尽可能规避了多个不同的任务复杂性和维护的难度,时间间隔多样性,达到以时间为索引的函数缓存的效果 - **Primary Language**: JavaScript - **License**: GPL-2.0 - **Default Branch**: master - **Homepage**: https://www.npmjs.com/package/timer-manager-lib - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 0 - **Created**: 2024-01-13 - **Last Updated**: 2024-02-19 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # timer-manager-lib #### 介绍 基于 JS 实现的一个定时任务管理器,可以在 Node 和浏览器环境下使用,你可以轻松地添加、删除、启动、停止和清除定时器,使用同一个 interval 管理全局的 timer,尽可能规避了多个不同的任务复杂性和维护的难度,时间间隔多样性,达到以时间为索引的函数缓存的效果 #### 调试教程 1. pnpm i 2. pnpm dev 3. pnpm build #### 使用说明 1. 安装 ```bash npm install timer-manager-lib yarn add timer-manager-lib pnpm install timer-manager-lib ``` 2. 在代码中引入 timer-manager-lib 模块 ##### ESModule ```javascript import { TimerManager } from "timer-manager-lib"; ``` ##### Commonjs ```javascript const { TimerManager } = require("timer-manager-lib"); ``` ##### UMD ```html ``` 3. 创建一个 Timer 实例 ```javascript const timerManager = new TimerManager({ type: "interval", // interval 轮询定时器或 frame 帧定时器 autoStop: true, // 当没有句柄时自动停止定时器 }); ``` 4. 添加定时器 使用 `add` 方法添加定时器。它接受一个回调函数 (`handle`) 和一个延迟时间: ```javascript const handle = () => { console.log("定时器触发"); }; const delay = 1000; // 时间以毫秒为单位 const timer = timerManager.add(handle, delay); ``` 5. 删除定时器 使用 `delete` 方法删除某项定时器,参数提供添加定时器的 timer 对象: ```javascript timerManager.delete(timer); ``` 6. 清除所有定时器 使用 `clear` 方法停止并清除所有定时器: ```javascript timerManager.clear(); ``` 7. 启动、暂停对应 delay 的定时器 使用 `startTimer` 和 `stopTimer` 对某个 interval 启动、暂停: ```javascript const timerManage = new TimerManager(); const { timers } = timerManage; const timer1 = timerManage.add(() => { console.log("hello"); }, 1000); timerManage.add(() => { console.log("阿宇的编程之旅"); }, 1000); const { delay } = timer1; timerManage.stopTimer(timers[delay]); // 暂停定时器 setTimeout(() => { timerManage.startTimer(timers[delay]); // 1.5秒后启动定时器 }, 1500); ``` 8. 自动停止 默认情况下,`autoStop` 选项设置为 `true`。这意味着当没有句柄(timer 的 handlers 为空)时,定时器将自动停止。如果要禁用此行为,请在初始化时将 `autoStop` 设置为 `false`。 9. 综合用法 ```javascript // 创建定时器管理器实例 const timerManager = new TimerManager(); // 记录执行步骤 let count = 0; // 添加定时器项,执行一次后删除 const timer = timerManager.add(() => { timerManager.delete(timer); console.log(performance.now(), "del timer", count++); }, 1000); // 延时添加定时器项,执行3次后重置 setTimeout(() => { console.log(performance.now(), "timer2 start"); timerManager.add(() => { console.log(performance.now(), "timer2", count++); if (count > 3) { timerManager.clear(); console.log(performance.now(), "clear"); } }, 1000); }, 2000); timerManager.add(() => { console.log(performance.now(), "timer3"); }, 500); ``` #### 更多 TS 类型及源码注释参考 https://gitee.com/DieHunter/timer-manager-lib #### 参与贡献 1. Fork 本仓库 2. Star 本仓库 3. 提出建议 4. 新建 Pull Request