X-Git-Url: http://git.asbjorn.biz/?a=blobdiff_plain;f=src%2Fcore.js;h=07666d928ed37723577337aec42af4b54e764176;hb=54d965ffa50fcc308721d370f952251d3da3e017;hp=eb0c1c8a7aae7f73d0c17c5f1de5d421ddc9e783;hpb=97b32d78307273f8bd2e5147bf5c0f0a45607a95;p=jquery.git diff --git a/src/core.js b/src/core.js index eb0c1c8..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,17 +944,12 @@ jQuery.extend({ return deferred; }, - // Check if an object is a deferred - isDeferred: function( object ) { - return !!( object && object.then && object.then._ === deferredMarker ); - }, - // Deferred helper when: function( object ) { - object = jQuery.isDeferred( object ) ? + object = object && object.promise && object.promise._ === promiseMarker ? object : jQuery.Deferred().resolve( object ); - return object; + return object.promise(); }, // Use of jQuery.browser is frowned upon. @@ -966,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) {