Deferred.js
2.26 KB
//>>built
define(["./has","./_base/lang","./errors/CancelError","./promise/Promise","./has!config-deferredInstrumentation?./promise/instrumentation"],function(n,x,u,v,r){var w=Object.freeze||function(){},p=function(b,a,c,d,e){n("config-deferredInstrumentation")&&2===a&&g.instrumentRejected&&0===b.length&&g.instrumentRejected(c,!1,d,e);for(e=0;e<b.length;e++)t(b[e],a,c,d)},t=function(b,a,c,d){var e=b[a],f=b.deferred;if(e)try{var h=e(c);if(0===a)"undefined"!==typeof h&&l(f,a,h);else{if(h&&"function"===typeof h.then){b.cancel=
h.cancel;h.then(q(f,1),q(f,2),q(f,0));return}l(f,1,h)}}catch(k){l(f,2,k)}else l(f,a,c);n("config-deferredInstrumentation")&&2===a&&g.instrumentRejected&&g.instrumentRejected(c,!!e,d,f.promise)},q=function(b,a){return function(c){l(b,a,c)}},l=function(b,a,c){if(!b.isCanceled())switch(a){case 0:b.progress(c);break;case 1:b.resolve(c);break;case 2:b.reject(c)}},g=function(b){var a=this.promise=new v,c=this,d,e,f,h=!1,k=[];n("config-deferredInstrumentation")&&Error.captureStackTrace&&(Error.captureStackTrace(c,
g),Error.captureStackTrace(a,g));this.isResolved=a.isResolved=function(){return 1===d};this.isRejected=a.isRejected=function(){return 2===d};this.isFulfilled=a.isFulfilled=function(){return!!d};this.isCanceled=a.isCanceled=function(){return h};this.progress=function(b,e){if(d){if(!0===e)throw Error("This deferred has already been fulfilled.");return a}p(k,0,b,null,c);return a};this.resolve=function(b,f){if(d){if(!0===f)throw Error("This deferred has already been fulfilled.");return a}p(k,d=1,e=b,
null,c);k=null;return a};var l=this.reject=function(b,g){if(d){if(!0===g)throw Error("This deferred has already been fulfilled.");return a}n("config-deferredInstrumentation")&&Error.captureStackTrace&&Error.captureStackTrace(f={},l);p(k,d=2,e=b,f,c);k=null;return a};this.then=a.then=function(b,c,h){var m=[h,b,c];m.cancel=a.cancel;m.deferred=new g(function(a){return m.cancel&&m.cancel(a)});d&&!k?t(m,d,e,f):k.push(m);return m.deferred.promise};this.cancel=a.cancel=function(a,c){if(!d){b&&(c=b(a),a=
"undefined"===typeof c?a:c);h=!0;if(!d)return"undefined"===typeof a&&(a=new u),l(a),a;if(2===d&&e===a)return a}else if(!0===c)throw Error("This deferred has already been fulfilled.");};w(a)};g.prototype.toString=function(){return"[object Deferred]"};r&&r(g);return g});