18 lines
531 B
JavaScript
18 lines
531 B
JavaScript
import {Timer, now} from "./timer.js";
|
|
|
|
export default function(callback, delay, time) {
|
|
var t = new Timer, total = delay;
|
|
if (delay == null) return t.restart(callback, delay, time), t;
|
|
t._restart = t.restart;
|
|
t.restart = function(callback, delay, time) {
|
|
delay = +delay, time = time == null ? now() : +time;
|
|
t._restart(function tick(elapsed) {
|
|
elapsed += total;
|
|
t._restart(tick, total += delay, time);
|
|
callback(elapsed);
|
|
}, delay, time);
|
|
}
|
|
t.restart(callback, delay, time);
|
|
return t;
|
|
}
|