UNPKG

@xesam/timer

Version:

a simple javascript timer wrapper

114 lines (86 loc) 2.59 kB
# Timer.js 一个简单的 Javascript 计时器封装(A simple javascript Timer);增加了一些控制方法: start(timeout) // 开启计时器 pause() // 暂停计时器 resume() // 恢复计时器 stop() // 停止计时器 ## install ```shell script npm install @xesam/timer ``` ## 普通计时器(Timer) 使用方法: ```javascript const timer = new Timer(interval, eventHandleFunction); // eventHandler 会接收到一个 event 事件 timer.on('tick', () => { }); timer.start(); timer.pause(); timer.resume(); timer.stop(); ``` 默认的 event 事件类型: start pause resume stop tick 比如每次 tick 都会收到 `tick` 事件,而 start, pause, resume, stop 则会收到 `start,pause,resume,stop`的事件。 ```javascript const timer = new Timer(1000); timer.on('start', console.log); timer.on('stop', console.log); timer.on('pause', console.log); timer.on('resume', console.log); timer.on('tick', console.log); ``` ## 定时器(CounterTimer) 使用方法: ```javascript const timer = new CounterTimer(interval); timer.on('tick', () => { console.log(timer.getCount()); }); timer.start(); timer.pause(); timer.resume(); timer.stop(); ``` 相比 Timer,CounterTimer 增加了 getCount() 方法,用来获取计数器的值。每次 tick 都会增加 count 的值。 可以指定最大的count值,在到达最大的 count 之后,会触发 `done` 事件: ```javascript const timer = new CounterTimer(interval, 3); timer.on('done', () => { console.log(timer.getCount()); // `3` }); timer.start(); ``` ## 元素定时发射(EmitterTimer) 将数组元素定时发射出去的计时器, `tick` 参数是 {data, index}: index : emit 元素的数组索引 data : index 对应的数组元素 ```javascript const timer = new EmitterTimer(1000); timer.on('tick', ({ data, index }) => { console.log(index, data); }); timer.start(); ``` ## 倒计时计时器(CountdownTimer) 使用方法: ```javascript const timer = new CountdownTimer(1000, 10000); timer.on('tick', ({ leftMills }) => { console.log(leftMills); }); timer.start(); timer.pause(); timer.resume(); timer.stop(); ``` 相比其他的计时器,CountdownTimer 增加了 done 事件, 表示倒计时结束。 同时,在 tick 和 done 事件中,都增加了 leftMills 属性,表示剩余的时间。 ## ChangeLog ### 0.1.0 1. 增加 EmitterTimer; 2. 增加 on/emit 接口;