mirror of
https://github.com/jquery/jquery.git
synced 2024-11-23 02:54:22 +00:00
Deferred: add .catch handler
Fixes gh-2102
This commit is contained in:
parent
5895340088
commit
ef77f83db8
@ -33,6 +33,9 @@ jQuery.extend({
|
|||||||
deferred.done( arguments ).fail( arguments );
|
deferred.done( arguments ).fail( arguments );
|
||||||
return this;
|
return this;
|
||||||
},
|
},
|
||||||
|
"catch": function( fn ) {
|
||||||
|
return promise.then( null, fn );
|
||||||
|
},
|
||||||
// Keep pipe for back-compat
|
// Keep pipe for back-compat
|
||||||
pipe: function( /* fnDone, fnFail, fnProgress */ ) {
|
pipe: function( /* fnDone, fnFail, fnProgress */ ) {
|
||||||
var fns = arguments;
|
var fns = arguments;
|
||||||
|
@ -167,6 +167,42 @@ test( "jQuery.Deferred.then - filtering (fail)", function( assert ) {
|
|||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
test( "jQuery.Deferred.catch", function( assert ) {
|
||||||
|
assert.expect( 4 );
|
||||||
|
|
||||||
|
var value1, value2, value3,
|
||||||
|
defer = jQuery.Deferred(),
|
||||||
|
piped = defer.catch(function( a, b ) {
|
||||||
|
return a * b;
|
||||||
|
}),
|
||||||
|
done = jQuery.map( new Array( 3 ), function() { return assert.async(); } );
|
||||||
|
|
||||||
|
piped.done(function( result ) {
|
||||||
|
value3 = result;
|
||||||
|
});
|
||||||
|
|
||||||
|
defer.fail(function( a, b ) {
|
||||||
|
value1 = a;
|
||||||
|
value2 = b;
|
||||||
|
});
|
||||||
|
|
||||||
|
defer.reject( 2, 3 ).catch(function() {
|
||||||
|
assert.strictEqual( value1, 2, "first reject value ok" );
|
||||||
|
assert.strictEqual( value2, 3, "second reject value ok" );
|
||||||
|
assert.strictEqual( value3, 6, "result of filter ok" );
|
||||||
|
done.pop().call();
|
||||||
|
});
|
||||||
|
|
||||||
|
jQuery.Deferred().resolve().catch(function() {
|
||||||
|
assert.ok( false, "then should not be called on resolve" );
|
||||||
|
}).then( done.pop() );
|
||||||
|
|
||||||
|
jQuery.Deferred().reject().catch( jQuery.noop ).done(function( value ) {
|
||||||
|
assert.strictEqual( value, undefined, "then fail callback can return undefined/null" );
|
||||||
|
done.pop().call();
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
test( "[PIPE ONLY] jQuery.Deferred.pipe - filtering (fail)", function( assert ) {
|
test( "[PIPE ONLY] jQuery.Deferred.pipe - filtering (fail)", function( assert ) {
|
||||||
|
|
||||||
assert.expect( 4 );
|
assert.expect( 4 );
|
||||||
|
Loading…
Reference in New Issue
Block a user