From f0cfe83e3725f9a3928da97a6e3085e79cb25309 Mon Sep 17 00:00:00 2001 From: Andrew Dolgov Date: Mon, 18 Mar 2013 10:26:24 +0400 Subject: upgrade dojo to 1.8.3 (refs #570) --- lib/dojo/when.js.uncompressed.js | 55 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 55 insertions(+) create mode 100644 lib/dojo/when.js.uncompressed.js (limited to 'lib/dojo/when.js.uncompressed.js') diff --git a/lib/dojo/when.js.uncompressed.js b/lib/dojo/when.js.uncompressed.js new file mode 100644 index 000000000..7c7764250 --- /dev/null +++ b/lib/dojo/when.js.uncompressed.js @@ -0,0 +1,55 @@ +define("dojo/when", [ + "./Deferred", + "./promise/Promise" +], function(Deferred, Promise){ + "use strict"; + + // module: + // dojo/when + + return function when(valueOrPromise, callback, errback, progback){ + // summary: + // Transparently applies callbacks to values and/or promises. + // description: + // Accepts promises but also transparently handles non-promises. If no + // callbacks are provided returns a promise, regardless of the initial + // value. Foreign promises are converted. + // + // If callbacks are provided and the initial value is not a promise, + // the callback is executed immediately with no error handling. Returns + // a promise if the initial value is a promise, or the result of the + // callback otherwise. + // valueOrPromise: + // Either a regular value or an object with a `then()` method that + // follows the Promises/A specification. + // callback: Function? + // Callback to be invoked when the promise is resolved, or a non-promise + // is received. + // errback: Function? + // Callback to be invoked when the promise is rejected. + // progback: Function? + // Callback to be invoked when the promise emits a progress update. + // returns: dojo/promise/Promise + // Promise, or if a callback is provided, the result of the callback. + + var receivedPromise = valueOrPromise && typeof valueOrPromise.then === "function"; + var nativePromise = receivedPromise && valueOrPromise instanceof Promise; + + if(!receivedPromise){ + if(callback){ + return callback(valueOrPromise); + }else{ + return new Deferred().resolve(valueOrPromise); + } + }else if(!nativePromise){ + var deferred = new Deferred(valueOrPromise.cancel); + valueOrPromise.then(deferred.resolve, deferred.reject, deferred.progress); + valueOrPromise = deferred.promise; + } + + if(callback || errback || progback){ + return valueOrPromise.then(callback, errback, progback); + } + return valueOrPromise; + }; +}); -- cgit v1.2.3