Fixes #9104. Returning null or undefined in a pipe callback shouldn't end up throwing an exception. Silly, silly, me.
This commit is contained in:
parent
efd0fce7a1
commit
8c13cfa805
2 changed files with 11 additions and 3 deletions
|
@ -119,7 +119,7 @@ jQuery.extend({
|
||||||
if ( jQuery.isFunction( fn ) ) {
|
if ( jQuery.isFunction( fn ) ) {
|
||||||
deferred[ handler ](function() {
|
deferred[ handler ](function() {
|
||||||
returned = fn.apply( this, arguments );
|
returned = fn.apply( this, arguments );
|
||||||
if ( jQuery.isFunction( returned.promise ) ) {
|
if ( returned && jQuery.isFunction( returned.promise ) ) {
|
||||||
returned.promise().then( newDefer.resolve, newDefer.reject );
|
returned.promise().then( newDefer.resolve, newDefer.reject );
|
||||||
} else {
|
} else {
|
||||||
newDefer[ action ]( returned );
|
newDefer[ action ]( returned );
|
||||||
|
|
|
@ -145,7 +145,7 @@ jQuery.each( [ "", " - new operator" ], function( _, withNew ) {
|
||||||
|
|
||||||
test( "jQuery.Deferred.pipe - filtering (done)", function() {
|
test( "jQuery.Deferred.pipe - filtering (done)", function() {
|
||||||
|
|
||||||
expect(3);
|
expect(4);
|
||||||
|
|
||||||
var defer = jQuery.Deferred(),
|
var defer = jQuery.Deferred(),
|
||||||
piped = defer.pipe(function( a, b ) {
|
piped = defer.pipe(function( a, b ) {
|
||||||
|
@ -173,11 +173,15 @@ test( "jQuery.Deferred.pipe - filtering (done)", function() {
|
||||||
jQuery.Deferred().reject().pipe(function() {
|
jQuery.Deferred().reject().pipe(function() {
|
||||||
ok( false, "pipe should not be called on reject" );
|
ok( false, "pipe should not be called on reject" );
|
||||||
});
|
});
|
||||||
|
|
||||||
|
jQuery.Deferred().resolve().pipe( jQuery.noop ).done(function( value ) {
|
||||||
|
strictEqual( value, undefined, "pipe done callback can return undefined/null" );
|
||||||
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
test( "jQuery.Deferred.pipe - filtering (fail)", function() {
|
test( "jQuery.Deferred.pipe - filtering (fail)", function() {
|
||||||
|
|
||||||
expect(3);
|
expect(4);
|
||||||
|
|
||||||
var defer = jQuery.Deferred(),
|
var defer = jQuery.Deferred(),
|
||||||
piped = defer.pipe( null, function( a, b ) {
|
piped = defer.pipe( null, function( a, b ) {
|
||||||
|
@ -205,6 +209,10 @@ test( "jQuery.Deferred.pipe - filtering (fail)", function() {
|
||||||
jQuery.Deferred().resolve().pipe( null, function() {
|
jQuery.Deferred().resolve().pipe( null, function() {
|
||||||
ok( false, "pipe should not be called on resolve" );
|
ok( false, "pipe should not be called on resolve" );
|
||||||
} );
|
} );
|
||||||
|
|
||||||
|
jQuery.Deferred().reject().pipe( null, jQuery.noop ).fail(function( value ) {
|
||||||
|
strictEqual( value, undefined, "pipe fail callback can return undefined/null" );
|
||||||
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
test( "jQuery.Deferred.pipe - deferred (done)", function() {
|
test( "jQuery.Deferred.pipe - deferred (done)", function() {
|
||||||
|
|
Loading…
Add table
Reference in a new issue