123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143 |
- /*
- Copyright (c) 2004-2011, 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
- */
- //>>built
- define("dojo/_base/Deferred",["./kernel","../Deferred","../promise/Promise","../errors/CancelError","../has","./lang","../when"],function(_1,_2,_3,_4,_5,_6,_7){
- var _8=function(){
- };
- var _9=Object.freeze||function(){
- };
- var _a=_1.Deferred=function(_b){
- var _c,_d,_e,_f,_10,_11,_12;
- var _13=(this.promise=new _3());
- function _14(_15){
- if(_d){
- throw new Error("This deferred has already been resolved");
- }
- _c=_15;
- _d=true;
- _16();
- };
- function _16(){
- var _17;
- while(!_17&&_12){
- var _18=_12;
- _12=_12.next;
- if((_17=(_18.progress==_8))){
- _d=false;
- }
- var _19=(_10?_18.error:_18.resolved);
- if(_5("config-useDeferredInstrumentation")){
- if(_10&&_2.instrumentRejected){
- _2.instrumentRejected(_c,!!_19);
- }
- }
- if(_19){
- try{
- var _1a=_19(_c);
- if(_1a&&typeof _1a.then==="function"){
- _1a.then(_6.hitch(_18.deferred,"resolve"),_6.hitch(_18.deferred,"reject"),_6.hitch(_18.deferred,"progress"));
- continue;
- }
- var _1b=_17&&_1a===undefined;
- if(_17&&!_1b){
- _10=_1a instanceof Error;
- }
- _18.deferred[_1b&&_10?"reject":"resolve"](_1b?_c:_1a);
- }
- catch(e){
- _18.deferred.reject(e);
- }
- }else{
- if(_10){
- _18.deferred.reject(_c);
- }else{
- _18.deferred.resolve(_c);
- }
- }
- }
- };
- this.isResolved=_13.isResolved=function(){
- return _f==0;
- };
- this.isRejected=_13.isRejected=function(){
- return _f==1;
- };
- this.isFulfilled=_13.isFulfilled=function(){
- return _f>=0;
- };
- this.isCanceled=_13.isCanceled=function(){
- return _e;
- };
- this.resolve=this.callback=function(_1c){
- this.fired=_f=0;
- this.results=[_1c,null];
- _14(_1c);
- };
- this.reject=this.errback=function(_1d){
- _10=true;
- this.fired=_f=1;
- if(_5("config-useDeferredInstrumentation")){
- if(_2.instrumentRejected){
- _2.instrumentRejected(_1d,!!_12);
- }
- }
- _14(_1d);
- this.results=[null,_1d];
- };
- this.progress=function(_1e){
- var _1f=_12;
- while(_1f){
- var _20=_1f.progress;
- _20&&_20(_1e);
- _1f=_1f.next;
- }
- };
- this.addCallbacks=function(_21,_22){
- this.then(_21,_22,_8);
- return this;
- };
- _13.then=this.then=function(_23,_24,_25){
- var _26=_25==_8?this:new _a(_13.cancel);
- var _27={resolved:_23,error:_24,progress:_25,deferred:_26};
- if(_12){
- _11=_11.next=_27;
- }else{
- _12=_11=_27;
- }
- if(_d){
- _16();
- }
- return _26.promise;
- };
- var _28=this;
- _13.cancel=this.cancel=function(){
- if(!_d){
- var _29=_b&&_b(_28);
- if(!_d){
- if(!(_29 instanceof Error)){
- _29=new _4(_29);
- }
- _29.log=false;
- _28.reject(_29);
- }
- }
- _e=true;
- };
- _9(_13);
- };
- _6.extend(_a,{addCallback:function(_2a){
- return this.addCallbacks(_6.hitch.apply(_1,arguments));
- },addErrback:function(_2b){
- return this.addCallbacks(null,_6.hitch.apply(_1,arguments));
- },addBoth:function(_2c){
- var _2d=_6.hitch.apply(_1,arguments);
- return this.addCallbacks(_2d,_2d);
- },fired:-1});
- _a.when=_1.when=_7;
- return _a;
- });
|