]>
git.wh0rd.org - tt-rss.git/blob - lib/dojo/_base/Deferred.js
2 Copyright (c) 2004-2016, The JS Foundation All Rights Reserved.
3 Available via Academic Free License >= 2.1 OR the modified BSD license.
4 see: http://dojotoolkit.org/license for details
8 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
;});