define(["utils/utils"],function(a){return Backbone.Model.extend({initialize:function(){this.active={},this.last=null},execute:function(b){var c=this,d=a.uid(),e=b.length>0;this.active[d]=!0;var f=$.Deferred();f.promise().always(function(){delete c.active[d],e&&Galaxy.emit.debug("deferred::execute()",this.state().charAt(0).toUpperCase()+this.state().slice(1)+" "+d)}),$.when(this.last).always(function(){c.active[d]?(e&&Galaxy.emit.debug("deferred::execute()","Running "+d),b(f),!e&&f.resolve()):f.reject()}),this.last=f.promise()},reset:function(){Galaxy.emit.debug("deferred::execute()","Reset");for(var a in this.active)this.active[a]=!1},ready:function(){return $.isEmptyObject(this.active)}})}); //# sourceMappingURL=../../maps/utils/deferred.js.map