X-Git-Url: http://git.asbjorn.biz/?a=blobdiff_plain;f=src%2Fcore.js;h=07666d928ed37723577337aec42af4b54e764176;hb=54d965ffa50fcc308721d370f952251d3da3e017;hp=57a42d09ea4093a26e1b6f03f3135d9e92729142;hpb=846c52d1f8535a6283dcc42c6e8f0c26991936ad;p=jquery.git diff --git a/src/core.js b/src/core.js index 57a42d0..07666d9 100644 --- a/src/core.js +++ b/src/core.js @@ -78,7 +78,7 @@ var jQuery = function( selector, context ) { class2type = {}, // Marker for deferred - deferredMarker = []; + promiseMarker = []; jQuery.fn = jQuery.prototype = { init: function( selector, context ) { @@ -896,9 +896,6 @@ jQuery.extend({ } }; - // Add the deferred marker - deferred.then._ = deferredMarker; - return deferred; }, @@ -916,7 +913,16 @@ jQuery.extend({ fail: errorDeferred.then, fireReject: errorDeferred.fire, reject: errorDeferred.resolve, - isRejected: errorDeferred.isResolved + isRejected: errorDeferred.isResolved, + // Get a promise for this deferred + // If obj is provided, the promise aspect is added to the object + promise: function( obj ) { + obj = obj || {}; + for ( var i in { then:1 , fail:1 , isResolved:1 , isRejected:1 , promise:1 } ) { + obj[ i ] = deferred[ i ]; + } + return obj; + } } ); @@ -924,6 +930,9 @@ jQuery.extend({ delete deferred.cancel; delete deferred.isCancelled; + // Add promise marker + deferred.promise._ = promiseMarker; + // Make sure only one callback list will be used deferred.then( errorDeferred.cancel ).fail( successCancel ); @@ -935,22 +944,12 @@ jQuery.extend({ return deferred; }, - // Check if an object is a deferred - isDeferred: function( object , method ) { - method = method || "then"; - return !!( object && object[ method ] && object[ method ]._ === deferredMarker ); - }, - // Deferred helper - when: function( object , method ) { - method = method || "then"; - object = jQuery.isDeferred( object , method ) ? + when: function( object ) { + object = object && object.promise && object.promise._ === promiseMarker ? object : jQuery.Deferred().resolve( object ); - object.fail = object.fail || function() { return this; }; - object[ method ] = object[ method ] || object.then; - object.then = object.then || object[ method ]; - return object; + return object.promise(); }, // Use of jQuery.browser is frowned upon. @@ -971,9 +970,7 @@ jQuery.extend({ }); // Create readyList deferred -// also force $.fn.ready to be recognized as a defer readyList = jQuery._Deferred(); -jQuery.fn.ready._ = deferredMarker; // Populate the class2type map jQuery.each("Boolean Number String Function Array Date RegExp Object".split(" "), function(i, name) { @@ -1043,6 +1040,11 @@ function doScrollCheck() { jQuery.ready(); } +// Expose jQuery as an Asynchronous Module +if ( typeof define !== "undefined" ) { + define( "jquery", [], function () { return jQuery; } ); +} + // Expose jQuery to the global object return (window.jQuery = window.$ = jQuery);