import Timer from './abstract_timer';
import TimedCallback from './timed_callback';
import { Delay } from './scheduling';
// We need to bind clear functions this way to avoid exceptions on IE8
function clearTimeout(timer) {
global.clearTimeout(timer);
}
function clearInterval(timer) {
global.clearInterval(timer);
}
/** Cross-browser compatible one-off timer abstraction.
*
* @param {Number} delay
* @param {Function} callback
*/
export class OneOffTimer extends Timer {
constructor(delay: Delay, callback: TimedCallback) {
super(setTimeout, clearTimeout, delay, function(timer) {
callback();
return null;
});
}
}
/** Cross-browser compatible periodic timer abstraction.
*
* @param {Number} delay
* @param {Function} callback
*/
export class PeriodicTimer extends Timer {
constructor(delay: Delay, callback: TimedCallback) {
super(setInterval, clearInterval, delay, function(timer) {
callback();
return timer;
});
}
}
|