diff options
author | Andrew Dolgov <[email protected]> | 2010-11-15 10:39:52 +0300 |
---|---|---|
committer | Andrew Dolgov <[email protected]> | 2010-11-15 10:39:52 +0300 |
commit | 2f01fe57a8d37767827d6db42850aef86a767c53 (patch) | |
tree | 516a95ffce2fc2435aed8d9976e444dbcba7dce3 /lib/dojo/_base/Deferred.js | |
parent | 951906dcecb1d3c7bcf751976a03e0c196ca6db0 (diff) |
add dijit/dojo stuff; initial ui mockup
Diffstat (limited to 'lib/dojo/_base/Deferred.js')
-rw-r--r-- | lib/dojo/_base/Deferred.js | 130 |
1 files changed, 130 insertions, 0 deletions
diff --git a/lib/dojo/_base/Deferred.js b/lib/dojo/_base/Deferred.js new file mode 100644 index 000000000..dfbabc4c0 --- /dev/null +++ b/lib/dojo/_base/Deferred.js @@ -0,0 +1,130 @@ +/* + Copyright (c) 2004-2010, The Dojo Foundation All Rights Reserved. + Available via Academic Free License >= 2.1 OR the modified BSD license. + see: http://dojotoolkit.org/license for details +*/ + + +if(!dojo._hasResource["dojo._base.Deferred"]){ +dojo._hasResource["dojo._base.Deferred"]=true; +dojo.provide("dojo._base.Deferred"); +dojo.require("dojo._base.lang"); +(function(){ +var _1=function(){ +}; +var _2=Object.freeze||function(){ +}; +dojo.Deferred=function(_3){ +var _4,_5,_6,_7,_8; +var _9=this.promise={}; +function _a(_b){ +if(_5){ +throw new Error("This deferred has already been resolved"); +} +_4=_b; +_5=true; +_c(); +}; +function _c(){ +var _d; +while(!_d&&_8){ +var _e=_8; +_8=_8.next; +if(_d=(_e.progress==_1)){ +_5=false; +} +var _f=(_6?_e.error:_e.resolved); +if(_f){ +try{ +var _10=_f(_4); +if(_10&&typeof _10.then==="function"){ +_10.then(dojo.hitch(_e.deferred,"resolve"),dojo.hitch(_e.deferred,"reject")); +continue; +} +var _11=_d&&_10===undefined; +_e.deferred[_11&&_6?"reject":"resolve"](_11?_4:_10); +} +catch(e){ +_e.deferred.reject(e); +} +}else{ +if(_6){ +_e.deferred.reject(_4); +}else{ +_e.deferred.resolve(_4); +} +} +} +}; +this.resolve=this.callback=function(_12){ +this.fired=0; +this.results=[_12,null]; +_a(_12); +}; +this.reject=this.errback=function(_13){ +_6=true; +this.fired=1; +_a(_13); +this.results=[null,_13]; +if(!_13||_13.log!==false){ +(dojo.config.deferredOnError||function(x){ +console.error(x); +})(_13); +} +}; +this.progress=function(_14){ +var _15=_8; +while(_15){ +var _16=_15.progress; +_16&&_16(_14); +_15=_15.next; +} +}; +this.addCallbacks=function(_17,_18){ +this.then(_17,_18,_1); +return this; +}; +this.then=_9.then=function(_19,_1a,_1b){ +var _1c=_1b==_1?this:new dojo.Deferred(_9.cancel); +var _1d={resolved:_19,error:_1a,progress:_1b,deferred:_1c}; +if(_8){ +_7=_7.next=_1d; +}else{ +_8=_7=_1d; +} +if(_5){ +_c(); +} +return _1c.promise; +}; +var _1e=this; +this.cancel=_9.cancel=function(){ +if(!_5){ +var _1f=_3&&_3(_1e); +if(!_5){ +if(!(_1f instanceof Error)){ +_1f=new Error(_1f); +} +_1f.log=false; +_1e.reject(_1f); +} +} +}; +_2(_9); +}; +dojo.extend(dojo.Deferred,{addCallback:function(_20){ +return this.addCallbacks(dojo.hitch.apply(dojo,arguments)); +},addErrback:function(_21){ +return this.addCallbacks(null,dojo.hitch.apply(dojo,arguments)); +},addBoth:function(_22){ +var _23=dojo.hitch.apply(dojo,arguments); +return this.addCallbacks(_23,_23); +},fired:-1}); +})(); +dojo.when=function(_24,_25,_26,_27){ +if(_24&&typeof _24.then==="function"){ +return _24.then(_25,_26,_27); +} +return _25(_24); +}; +} |