vesh-vj
Version:
VESH's JavaScript Framework
1 lines • 1.18 kB
JavaScript
!function(e,a){e.collection={},e.collection.Pool=function(a,t,s){var n=this,i={};i.data=[],i.have=[],i.use={},i.KEY="_____poolid",i.addUse=function(a){a&&(e.isValid(a[i.KEY])||(a[i.KEY]=e.random()),i.use[a[i.KEY]]=a)},i.delUse=function(a){a&&e.isValid(a[i.KEY])&&e.isValid(i.use[a[i.KEY]])&&delete i.use[a[i.KEY]]},s=e.getValue(s,10),i.clearer=new function(){var a=this,t=null;a.start=function(){t=window.setTimeout(function(){var t=i.have.length>0?i.have[0].endDate:null;if(e.isValid(t)&&(new Date).diff("ms",t)>0)a.start();else{for(;i.have.length>0;){var s=i.have.shift();s.dispose&&(s.dispose(),s=null)}i.data=[];for(var n in i.use)i.data.push(i.use[n]);a.start()}},500)},a.stop=function(){t&&window.clearTimeout(t),t=null}},i.clearer.start(),n.getValue=function(){var e=i.have.pop();return e?(e=e.value,i.addUse(e),e):i.data.length<a?(e=t(),i.addUse(e),i.data.push(e),e):null},n.setValue=function(a){i.delUse(a),e.isValid(a)&&e.isValid(a[i.KEY])&&i.have.push({endDate:(new Date).add("s",s),value:a})},n.dispose=function(){for(i.clearer.stop();i.have.length>0;){var e=i.have.shift();e.dispose&&(e.dispose(),e=null)}i.data=[];for(var a in use)i.data.push(use[a])}}}(VJ,jQuery);