Commit d29182e8 authored by jaubourg's avatar jaubourg

Removes isPending and introduces state as a means to retrieve the...

Removes isPending and introduces state as a means to retrieve the Deferred/Promise state. Unit tests amended.
parent 511c9fe7
...@@ -9,6 +9,7 @@ jQuery.extend({ ...@@ -9,6 +9,7 @@ jQuery.extend({
var doneList = jQuery.Callbacks( "once memory" ), var doneList = jQuery.Callbacks( "once memory" ),
failList = jQuery.Callbacks( "once memory" ), failList = jQuery.Callbacks( "once memory" ),
progressList = jQuery.Callbacks( "memory" ), progressList = jQuery.Callbacks( "memory" ),
state = "pending",
lists = { lists = {
resolve: doneList, resolve: doneList,
reject: failList, reject: failList,
...@@ -19,11 +20,13 @@ jQuery.extend({ ...@@ -19,11 +20,13 @@ jQuery.extend({
fail: failList.add, fail: failList.add,
progress: progressList.add, progress: progressList.add,
state: function() {
return state;
},
// Deprecated
isResolved: doneList.fired, isResolved: doneList.fired,
isRejected: failList.fired, isRejected: failList.fired,
isPending: function() {
return !progressList.locked();
},
then: function( doneCallbacks, failCallbacks, progressCallbacks ) { then: function( doneCallbacks, failCallbacks, progressCallbacks ) {
deferred.done( doneCallbacks ).fail( failCallbacks ).progress( progressCallbacks ); deferred.done( doneCallbacks ).fail( failCallbacks ).progress( progressCallbacks );
...@@ -78,9 +81,12 @@ jQuery.extend({ ...@@ -78,9 +81,12 @@ jQuery.extend({
deferred[ key + "With" ] = lists[ key ].fireWith; deferred[ key + "With" ] = lists[ key ].fireWith;
} }
// Handle lists exclusiveness // Handle state
deferred.done( failList.disable, progressList.lock ) deferred.done( function() {
.fail( doneList.disable, progressList.lock ); state = "resolved";
}, failList.disable, progressList.lock ).fail( function() {
state = "rejected";
}, doneList.disable, progressList.lock );
// Call given func if any // Call given func if any
if ( func ) { if ( func ) {
......
...@@ -8,11 +8,12 @@ jQuery.each( [ "", " - new operator" ], function( _, withNew ) { ...@@ -8,11 +8,12 @@ jQuery.each( [ "", " - new operator" ], function( _, withNew ) {
test("jQuery.Deferred" + withNew, function() { test("jQuery.Deferred" + withNew, function() {
expect( 20 ); expect( 22 );
createDeferred().resolve().then( function() { createDeferred().resolve().then( function() {
ok( true , "Success on resolve" ); ok( true , "Success on resolve" );
ok( this.isResolved(), "Deferred is resolved" ); ok( this.isResolved(), "Deferred is resolved" );
strictEqual( this.state(), "resolved", "Deferred is resolved (state)" );
}, function() { }, function() {
ok( false , "Error on resolve" ); ok( false , "Error on resolve" );
}).always( function() { }).always( function() {
...@@ -24,6 +25,7 @@ jQuery.each( [ "", " - new operator" ], function( _, withNew ) { ...@@ -24,6 +25,7 @@ jQuery.each( [ "", " - new operator" ], function( _, withNew ) {
}, function() { }, function() {
ok( true , "Error on reject" ); ok( true , "Error on reject" );
ok( this.isRejected(), "Deferred is rejected" ); ok( this.isRejected(), "Deferred is rejected" );
strictEqual( this.state(), "rejected", "Deferred is rejected (state)" );
}).always( function() { }).always( function() {
ok( true , "Always callback on reject" ); ok( true , "Always callback on reject" );
}); });
...@@ -37,7 +39,7 @@ jQuery.each( [ "", " - new operator" ], function( _, withNew ) { ...@@ -37,7 +39,7 @@ jQuery.each( [ "", " - new operator" ], function( _, withNew ) {
jQuery.each( "resolve reject".split( " " ), function( _, change ) { jQuery.each( "resolve reject".split( " " ), function( _, change ) {
createDeferred( function( defer ) { createDeferred( function( defer ) {
ok( defer.isPending(), "pending after creation" ); strictEqual( defer.state(), "pending", "pending after creation" );
var checked = 0; var checked = 0;
defer.progress(function( value ) { defer.progress(function( value ) {
strictEqual( value, checked, "Progress: right value (" + value + ") received" ); strictEqual( value, checked, "Progress: right value (" + value + ") received" );
...@@ -45,9 +47,9 @@ jQuery.each( [ "", " - new operator" ], function( _, withNew ) { ...@@ -45,9 +47,9 @@ jQuery.each( [ "", " - new operator" ], function( _, withNew ) {
for( checked = 0; checked < 3 ; checked++ ) { for( checked = 0; checked < 3 ; checked++ ) {
defer.notify( checked ); defer.notify( checked );
} }
ok( defer.isPending(), "pending after notification" ); strictEqual( defer.state(), "pending", "pending after notification" );
defer[ change ](); defer[ change ]();
ok( !defer.isPending(), "not pending after " + change ); notStrictEqual( defer.state(), "pending", "not pending after " + change );
defer.notify(); defer.notify();
}); });
}); });
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment