aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorjaubourg <j@ubourg.net>2012-04-02 01:29:39 +0200
committerjaubourg <j@ubourg.net>2012-04-02 01:29:39 +0200
commita41f2406748e3113751ab1e5b5d990d9144123fc (patch)
treed851963d2b4a5468cf27ae67df28b51d65f3ab55 /src
parenta29d482894a844724f4386f2fed0edf9cf70c069 (diff)
downloadjquery-a41f2406748e3113751ab1e5b5d990d9144123fc.tar.gz
jquery-a41f2406748e3113751ab1e5b5d990d9144123fc.zip
Makes Deferred implementation truly Promise/A compliant. Unit tests amended. Actually few changes required in jQuery's own source and we gained 8 bytes minified gzipped \o/.
Diffstat (limited to 'src')
-rw-r--r--src/ajax.js2
-rw-r--r--src/deferred.js18
2 files changed, 11 insertions, 9 deletions
diff --git a/src/ajax.js b/src/ajax.js
index 2bcc1d0a2..b241b257e 100644
--- a/src/ajax.js
+++ b/src/ajax.js
@@ -609,7 +609,7 @@ jQuery.extend({
}
} else {
tmp = map[ jqXHR.status ];
- jqXHR.then( tmp, tmp );
+ jqXHR.always( tmp );
}
}
return this;
diff --git a/src/deferred.js b/src/deferred.js
index c97084b70..ddc324738 100644
--- a/src/deferred.js
+++ b/src/deferred.js
@@ -28,15 +28,11 @@ jQuery.extend({
isResolved: doneList.fired,
isRejected: failList.fired,
- then: function( doneCallbacks, failCallbacks, progressCallbacks ) {
- deferred.done( doneCallbacks ).fail( failCallbacks ).progress( progressCallbacks );
- return this;
- },
always: function() {
deferred.done.apply( deferred, arguments ).fail.apply( deferred, arguments );
return this;
},
- pipe: function( fnDone, fnFail, fnProgress ) {
+ then: function( fnDone, fnFail, fnProgress ) {
return jQuery.Deferred(function( newDefer ) {
jQuery.each( {
done: [ fnDone, "resolve" ],
@@ -50,7 +46,7 @@ jQuery.extend({
deferred[ handler ](function() {
returned = fn.apply( this, arguments );
if ( returned && jQuery.isFunction( returned.promise ) ) {
- returned.promise().then( newDefer.resolve, newDefer.reject, newDefer.notify );
+ returned.promise().done( newDefer.resolve ).fail( newDefer.reject ).progress( newDefer.notify );
} else {
newDefer[ action + "With" ]( this === deferred ? newDefer : this, [ returned ] );
}
@@ -74,9 +70,15 @@ jQuery.extend({
return obj;
}
},
- deferred = promise.promise({}),
+ deferred,
key;
+ // Keep pipe for back-compat
+ promise.pipe = promise.then;
+
+ // Construct deferred
+ deferred = promise.promise({});
+
for ( key in lists ) {
deferred[ key ] = lists[ key ].fire;
deferred[ key + "With" ] = lists[ key ].fireWith;
@@ -127,7 +129,7 @@ jQuery.extend({
if ( length > 1 ) {
for ( ; i < length; i++ ) {
if ( args[ i ] && args[ i ].promise && jQuery.isFunction( args[ i ].promise ) ) {
- args[ i ].promise().then( resolveFunc(i), deferred.reject, progressFunc(i) );
+ args[ i ].promise().done( resolveFunc(i) ).fail( deferred.reject ).progress( progressFunc(i) );
} else {
--count;
}