Files
galaxy/static/scripts/utils/ajax-queue.js
T

3 lines
1.8 KiB
JavaScript

define("utils/ajax-queue",["exports"],function(e){"use strict";function t(e){var t=this;return t.deferred=jQuery.Deferred(),t.queue=[],t.responses=[],t.numToProcess=0,t.running=!1,t.init(e||[]),t.start(),t}function r(e){var r=this;return r.names={},t.call(this,e),r}Object.defineProperty(e,"__esModule",{value:!0}),t.prototype.init=function(e){var t=this;e.forEach(function(e){t.add(e)})},t.prototype.add=function(e){var t=this,r=this.queue.length;return this.numToProcess+=1,this.queue.push(function(){var n=r,s=e();s.done(function(e){t.deferred.notify({curr:n,total:t.numToProcess,response:e})}),s.always(function(e){t.responses.push(e),t.queue.length?t.queue.shift()():t.stop()})}),this},t.prototype.start=function(){return this.queue.length&&(this.running=!0,this.queue.shift()()),this},t.prototype.stop=function(e,t){return this.running=!1,this.queue=[],e?this.deferred.reject(t):this.deferred.resolve(this.responses),this.numToProcess=0,this.deferred=jQuery.Deferred(),this},t.prototype.done=function(e){return this.deferred.done(e)},t.prototype.fail=function(e){return this.deferred.fail(e)},t.prototype.always=function(e){return this.deferred.always(e)},t.prototype.progress=function(e){return this.deferred.progress(e)},t.create=function(e){return new t(e).deferred},(r.prototype=new t).constructor=r,r.prototype.add=function(e){if(!e.hasOwnProperty("name")||!e.hasOwnProperty("fn"))throw new Error('NamedAjaxQueue.add requires an object with both "name" and "fn": '+JSON.stringify(e));if(!this.names.hasOwnProperty(e.name))return this.names[e.name]=!0,t.prototype.add.call(this,e.fn)},r.prototype.clear=function(){return this.names={},this},r.create=function(e){return new r(e).deferred},e.default={AjaxQueue:t,NamedAjaxQueue:r}});
//# sourceMappingURL=../../maps/utils/ajax-queue.js.map