UNPKG

landers.angular

Version:

landers.angular

50 lines (44 loc) 1.46 kB
;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); } }; }]);