diff options
author | Barak Korren <[email protected]> | 2013-04-02 20:38:07 +0300 |
---|---|---|
committer | Barak Korren <[email protected]> | 2013-04-02 20:38:07 +0300 |
commit | 58a2577d48790c79adfd44bcfd662c980ce6cfe4 (patch) | |
tree | 523d814ea0b7b6f617fe515b186099c6e83fed72 /lib/dojo/Deferred.js.uncompressed.js | |
parent | e470a273cf09562fb2f9c0c899002303f19c8d16 (diff) | |
parent | cc332603431102a682feda22b9cf0093a29f0176 (diff) |
Merge branch 'master' of https://github.com/gothfox/Tiny-Tiny-RSS.git
Diffstat (limited to 'lib/dojo/Deferred.js.uncompressed.js')
-rw-r--r-- | lib/dojo/Deferred.js.uncompressed.js | 320 |
1 files changed, 0 insertions, 320 deletions
diff --git a/lib/dojo/Deferred.js.uncompressed.js b/lib/dojo/Deferred.js.uncompressed.js deleted file mode 100644 index f78dbd178..000000000 --- a/lib/dojo/Deferred.js.uncompressed.js +++ /dev/null @@ -1,320 +0,0 @@ -define("dojo/Deferred", [ - "./has", - "./_base/lang", - "./errors/CancelError", - "./promise/Promise", - "./promise/instrumentation" -], function(has, lang, CancelError, Promise, instrumentation){ - "use strict"; - - // module: - // dojo/Deferred - - var PROGRESS = 0, - RESOLVED = 1, - REJECTED = 2; - var FULFILLED_ERROR_MESSAGE = "This deferred has already been fulfilled."; - - var freezeObject = Object.freeze || function(){}; - - var signalWaiting = function(waiting, type, result, rejection, deferred){ - if( 1 ){ - if(type === REJECTED && Deferred.instrumentRejected && waiting.length === 0){ - Deferred.instrumentRejected(result, false, rejection, deferred); - } - } - - for(var i = 0; i < waiting.length; i++){ - signalListener(waiting[i], type, result, rejection); - } - }; - - var signalListener = function(listener, type, result, rejection){ - var func = listener[type]; - var deferred = listener.deferred; - if(func){ - try{ - var newResult = func(result); - if(type === PROGRESS){ - if(typeof newResult !== "undefined"){ - signalDeferred(deferred, type, newResult); - } - }else{ - if(newResult && typeof newResult.then === "function"){ - listener.cancel = newResult.cancel; - newResult.then( - // Only make resolvers if they're actually going to be used - makeDeferredSignaler(deferred, RESOLVED), - makeDeferredSignaler(deferred, REJECTED), - makeDeferredSignaler(deferred, PROGRESS)); - return; - } - signalDeferred(deferred, RESOLVED, newResult); - } - }catch(error){ - signalDeferred(deferred, REJECTED, error); - } - }else{ - signalDeferred(deferred, type, result); - } - - if( 1 ){ - if(type === REJECTED && Deferred.instrumentRejected){ - Deferred.instrumentRejected(result, !!func, rejection, deferred.promise); - } - } - }; - - var makeDeferredSignaler = function(deferred, type){ - return function(value){ - signalDeferred(deferred, type, value); - }; - }; - - var signalDeferred = function(deferred, type, result){ - if(!deferred.isCanceled()){ - switch(type){ - case PROGRESS: - deferred.progress(result); - break; - case RESOLVED: - deferred.resolve(result); - break; - case REJECTED: - deferred.reject(result); - break; - } - } - }; - - var Deferred = function(canceler){ - // summary: - // Creates a new deferred. This API is preferred over - // `dojo/_base/Deferred`. - // description: - // Creates a new deferred, as an abstraction over (primarily) - // asynchronous operations. The deferred is the private interface - // that should not be returned to calling code. That's what the - // `promise` is for. See `dojo/promise/Promise`. - // canceler: Function? - // Will be invoked if the deferred is canceled. The canceler - // receives the reason the deferred was canceled as its argument. - // The deferred is rejected with its return value, or a new - // `dojo/errors/CancelError` instance. - - // promise: dojo/promise/Promise - // The public promise object that clients can add callbacks to. - var promise = this.promise = new Promise(); - - var deferred = this; - var fulfilled, result, rejection; - var canceled = false; - var waiting = []; - - if( 1 && Error.captureStackTrace){ - Error.captureStackTrace(deferred, Deferred); - Error.captureStackTrace(promise, Deferred); - } - - this.isResolved = promise.isResolved = function(){ - // summary: - // Checks whether the deferred has been resolved. - // returns: Boolean - - return fulfilled === RESOLVED; - }; - - this.isRejected = promise.isRejected = function(){ - // summary: - // Checks whether the deferred has been rejected. - // returns: Boolean - - return fulfilled === REJECTED; - }; - - this.isFulfilled = promise.isFulfilled = function(){ - // summary: - // Checks whether the deferred has been resolved or rejected. - // returns: Boolean - - return !!fulfilled; - }; - - this.isCanceled = promise.isCanceled = function(){ - // summary: - // Checks whether the deferred has been canceled. - // returns: Boolean - - return canceled; - }; - - this.progress = function(update, strict){ - // summary: - // Emit a progress update on the deferred. - // description: - // Emit a progress update on the deferred. Progress updates - // can be used to communicate updates about the asynchronous - // operation before it has finished. - // update: any - // The progress update. Passed to progbacks. - // strict: Boolean? - // If strict, will throw an error if the deferred has already - // been fulfilled and consequently no progress can be emitted. - // returns: dojo/promise/Promise - // Returns the original promise for the deferred. - - if(!fulfilled){ - signalWaiting(waiting, PROGRESS, update, null, deferred); - return promise; - }else if(strict === true){ - throw new Error(FULFILLED_ERROR_MESSAGE); - }else{ - return promise; - } - }; - - this.resolve = function(value, strict){ - // summary: - // Resolve the deferred. - // description: - // Resolve the deferred, putting it in a success state. - // value: any - // The result of the deferred. Passed to callbacks. - // strict: Boolean? - // If strict, will throw an error if the deferred has already - // been fulfilled and consequently cannot be resolved. - // returns: dojo/promise/Promise - // Returns the original promise for the deferred. - - if(!fulfilled){ - // Set fulfilled, store value. After signaling waiting listeners unset - // waiting. - signalWaiting(waiting, fulfilled = RESOLVED, result = value, null, deferred); - waiting = null; - return promise; - }else if(strict === true){ - throw new Error(FULFILLED_ERROR_MESSAGE); - }else{ - return promise; - } - }; - - var reject = this.reject = function(error, strict){ - // summary: - // Reject the deferred. - // description: - // Reject the deferred, putting it in an error state. - // error: any - // The error result of the deferred. Passed to errbacks. - // strict: Boolean? - // If strict, will throw an error if the deferred has already - // been fulfilled and consequently cannot be rejected. - // returns: dojo/promise/Promise - // Returns the original promise for the deferred. - - if(!fulfilled){ - if( 1 && Error.captureStackTrace){ - Error.captureStackTrace(rejection = {}, reject); - } - signalWaiting(waiting, fulfilled = REJECTED, result = error, rejection, deferred); - waiting = null; - return promise; - }else if(strict === true){ - throw new Error(FULFILLED_ERROR_MESSAGE); - }else{ - return promise; - } - }; - - this.then = promise.then = function(callback, errback, progback){ - // summary: - // Add new callbacks to the deferred. - // description: - // Add new callbacks to the deferred. Callbacks can be added - // before or after the deferred is fulfilled. - // callback: Function? - // Callback to be invoked when the promise is resolved. - // Receives the resolution value. - // errback: Function? - // Callback to be invoked when the promise is rejected. - // Receives the rejection error. - // progback: Function? - // Callback to be invoked when the promise emits a progress - // update. Receives the progress update. - // returns: dojo/promise/Promise - // Returns a new promise for the result of the callback(s). - // This can be used for chaining many asynchronous operations. - - var listener = [progback, callback, errback]; - // Ensure we cancel the promise we're waiting for, or if callback/errback - // have returned a promise, cancel that one. - listener.cancel = promise.cancel; - listener.deferred = new Deferred(function(reason){ - // Check whether cancel is really available, returned promises are not - // required to expose `cancel` - return listener.cancel && listener.cancel(reason); - }); - if(fulfilled && !waiting){ - signalListener(listener, fulfilled, result, rejection); - }else{ - waiting.push(listener); - } - return listener.deferred.promise; - }; - - this.cancel = promise.cancel = function(reason, strict){ - // summary: - // Inform the deferred it may cancel its asynchronous operation. - // description: - // Inform the deferred it may cancel its asynchronous operation. - // The deferred's (optional) canceler is invoked and the - // deferred will be left in a rejected state. Can affect other - // promises that originate with the same deferred. - // reason: any - // A message that may be sent to the deferred's canceler, - // explaining why it's being canceled. - // strict: Boolean? - // If strict, will throw an error if the deferred has already - // been fulfilled and consequently cannot be canceled. - // returns: any - // Returns the rejection reason if the deferred was canceled - // normally. - - if(!fulfilled){ - // Cancel can be called even after the deferred is fulfilled - if(canceler){ - var returnedReason = canceler(reason); - reason = typeof returnedReason === "undefined" ? reason : returnedReason; - } - canceled = true; - if(!fulfilled){ - // Allow canceler to provide its own reason, but fall back to a CancelError - if(typeof reason === "undefined"){ - reason = new CancelError(); - } - reject(reason); - return reason; - }else if(fulfilled === REJECTED && result === reason){ - return reason; - } - }else if(strict === true){ - throw new Error(FULFILLED_ERROR_MESSAGE); - } - }; - - freezeObject(promise); - }; - - Deferred.prototype.toString = function(){ - // returns: String - // Returns `[object Deferred]`. - - return "[object Deferred]"; - }; - - if(instrumentation){ - instrumentation(Deferred); - } - - return Deferred; -}); |