Skip to content

molvqingtai/timer

Repository files navigation

Timer

version workflow download JavaScript Style Guide

⏰ Short and sweet timer

Install

npm install @resreq/timer

Usage

import Timer from '@resreq/timer'

const log = (time: number) => console.log('time:', time)

const timer = new Timer(log, {
  interval: 1000,
  immediate: true
})

timer.on('start', (time) => {
  console.log('start:', time)
})
timer.on('pause', (time) => {
  console.log('pause:', time)
})
timer.on('stop', (time) => {
  console.log('stop:', time)
})

timer.start()

setTimeout(() => timer.pause(), 1000)
setTimeout(() => timer.start(), 2000)
setTimeout(() => timer.stop(), 3000)

// => start: 1712160512855
// => time: 1712160512858
// => pause: 1712160513855
// => start: 1712160514855
// => time: 1712160514855
// => stop: 1712160515855

Adapter

setTimeout is used by default, and custom adapters are supported, such as requestAnimationFrame, cancelIdleCallback, etc...

const timer = new Timer(log, {
  adapter: {
    setTimer: globalThis.requestAnimationFrame.bind(globalThis),
    cancelTimer: globalThis.cancelAnimationFrame.bind(globalThis)
  }
})

LICENSE

This project is licensed under the MIT License - see the LICENSE file for details.