rsnext/examples/with-cerebral/modules/clock/provider.js

27 lines
454 B
JavaScript
Raw Normal View History

2017-09-23 16:30:22 +02:00
// milliseconds per second
const SECOND = 1000
let timer = null
export default function provider(context) {
2017-09-23 16:30:22 +02:00
context.clock = {
start(signalPath) {
2017-09-23 16:30:22 +02:00
const signal = context.controller.getSignal(signalPath)
function tick() {
2017-09-23 16:30:22 +02:00
const now = Date.now()
signal({ now })
2017-09-23 16:30:22 +02:00
timer = setTimeout(tick, SECOND - (now % SECOND))
}
tick()
},
stop() {
2017-09-23 16:30:22 +02:00
clearTimeout(timer)
},
2017-09-23 16:30:22 +02:00
}
return context
}