landers.angular
Version:
landers.angular
50 lines (44 loc) • 1.46 kB
JavaScript
;angular.module('Landers.angular')
.factory('Polling', ['$timeout', function($timeout){
function AjaxPolling(ajaxBuilder, delay){
var callbacks = [];
var done_count = 0;
var _stop = true;
this.push = function(callback){
callbacks.push(callback);
this.start();
};
var _callback = function(rspn){
angular.forEach(callbacks, function(callback){
callback(rspn);
});
};
this.execute = function(){
done_count = 0;
ajaxBuilder().success(_callback).error(_callback);
};
this.done = function(){
var me = this; done_count++;
if (done_count == callbacks.length) {
$timeout(function(){
if (!_stop) me.execute();
}, delay || 1000);
}
};
this.start = function(){
if (!_stop) return;
_stop = false;
this.execute();
return this;
};
this.stop = function(){
_stop = true;
return this;
};
}
return {
make:function(ajaxBuilder, delay){
return new AjaxPolling(ajaxBuilder, delay);
}
};
}]);