(function() {
/**
*@description 和上次运行时间比对,超过interval则执行指定动作
*@class
*/
mars.AlarmObject = function(interval, run) {
this.interval = interval;
this.run = run;
this.updateHistory = 0;
}
/**
*@description 和上次运行时间比对,超过interval则ajax取出datasource,ajax返回后执行run
*/
mars.AlarmObject.prototype.checkUpdate = function(now, datasource) {
if(now - this.updateHistory < this.interval) return;
else {
this.update(datasource);
this.updateHistory = now;
}
};
/**
*@description 取出datasource,ajax返回后执行run
*/
mars.AlarmObject.prototype.update = function(datasource) {
console.log(datasource);
var fnCallback = this.run;
$.getJSON(datasource, function(result) {
fnCallback(result);
});
};
/**
*@description 和上次运行时间比对,超过interval则执行run
*/
mars.AlarmObject.prototype.check = function(now) {
if(now - this.updateHistory < this.interval) return;
else {
this.run();
this.updateHistory = now;
}
};
})();
用法:
dataUpdater = new mars.AlarmObject(interval, this.callback.bind(this));
tick() {
var now = Date.now()
dataUpdater.checkUpdate(now, "http://ajax.data");
//或者
dataUpdater.check(now);
}