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