Replaces jQuery._Deferred with the much more flexible (and public) jQuery.Callbacks. Hopefully, jQuery.Callbacks can be used as a base for all callback lists needs in jQuery. Also adds progress callbacks to Deferreds (handled in jQuery.when too). Needs more unit tests.
This commit is contained in:
parent
9d4033d629
commit
a31195fd5a
15 changed files with 317 additions and 273 deletions
|
@ -16,7 +16,7 @@
|
|||
#positionTest { position: absolute; }
|
||||
</style>
|
||||
<script src="../../../src/core.js"></script>
|
||||
<script src="../../../src/deferred.js"></script>
|
||||
<script src="../../../src/callbacks.js"></script>
|
||||
<script src="../../../src/support.js"></script>
|
||||
<script src="../../../src/sizzle/sizzle.js"></script>
|
||||
<script src="../../../src/sizzle-jquery.js"></script>
|
||||
|
|
|
@ -9,7 +9,7 @@
|
|||
#marker { position: absolute; border: 2px solid #000; width: 50px; height: 50px; background: #ccc; }
|
||||
</style>
|
||||
<script src="../../../src/core.js"></script>
|
||||
<script src="../../../src/deferred.js"></script>
|
||||
<script src="../../../src/callbacks.js"></script>
|
||||
<script src="../../../src/support.js"></script>
|
||||
<script src="../../../src/sizzle/sizzle.js"></script>
|
||||
<script src="../../../src/sizzle-jquery.js"></script>
|
||||
|
|
|
@ -13,7 +13,7 @@
|
|||
#marker { position: absolute; border: 2px solid #000; width: 50px; height: 50px; background: #ccc; }
|
||||
</style>
|
||||
<script src="../../../src/core.js"></script>
|
||||
<script src="../../../src/deferred.js"></script>
|
||||
<script src="../../../src/callbacks.js"></script>
|
||||
<script src="../../../src/support.js"></script>
|
||||
<script src="../../../src/sizzle/sizzle.js"></script>
|
||||
<script src="../../../src/sizzle-jquery.js"></script>
|
||||
|
|
|
@ -11,7 +11,7 @@
|
|||
#marker { position: absolute; border: 2px solid #000; width: 50px; height: 50px; background: #ccc; }
|
||||
</style>
|
||||
<script src="../../../src/core.js"></script>
|
||||
<script src="../../../src/deferred.js"></script>
|
||||
<script src="../../../src/callbacks.js"></script>
|
||||
<script src="../../../src/support.js"></script>
|
||||
<script src="../../../src/sizzle/sizzle.js"></script>
|
||||
<script src="../../../src/sizzle-jquery.js"></script>
|
||||
|
|
|
@ -14,7 +14,7 @@
|
|||
#marker { position: absolute; border: 2px solid #000; width: 50px; height: 50px; background: #ccc; }
|
||||
</style>
|
||||
<script src="../../../src/core.js"></script>
|
||||
<script src="../../../src/deferred.js"></script>
|
||||
<script src="../../../src/callbacks.js"></script>
|
||||
<script src="../../../src/support.js"></script>
|
||||
<script src="../../../src/sizzle/sizzle.js"></script>
|
||||
<script src="../../../src/sizzle-jquery.js"></script>
|
||||
|
|
|
@ -11,7 +11,7 @@
|
|||
#marker { position: absolute; border: 2px solid #000; width: 50px; height: 50px; background: #ccc; }
|
||||
</style>
|
||||
<script src="../../../src/core.js"></script>
|
||||
<script src="../../../src/deferred.js"></script>
|
||||
<script src="../../../src/callbacks.js"></script>
|
||||
<script src="../../../src/support.js"></script>
|
||||
<script src="../../../src/sizzle/sizzle.js"></script>
|
||||
<script src="../../../src/sizzle-jquery.js"></script>
|
||||
|
|
|
@ -11,7 +11,7 @@
|
|||
#marker { position: absolute; border: 2px solid #000; width: 50px; height: 50px; background: #ccc; }
|
||||
</style>
|
||||
<script src="../../../src/core.js"></script>
|
||||
<script src="../../../src/deferred.js"></script>
|
||||
<script src="../../../src/callbacks.js"></script>
|
||||
<script src="../../../src/support.js"></script>
|
||||
<script src="../../../src/sizzle/sizzle.js"></script>
|
||||
<script src="../../../src/sizzle-jquery.js"></script>
|
||||
|
|
|
@ -9,6 +9,7 @@
|
|||
<script src="data/testinit.js"></script>
|
||||
|
||||
<script src="../src/core.js"></script>
|
||||
<script src="../src/callbacks.js"></script>
|
||||
<script src="../src/deferred.js"></script>
|
||||
<script src="../src/support.js"></script>
|
||||
<script src="../src/data.js"></script>
|
||||
|
@ -34,8 +35,9 @@
|
|||
<script src="data/testrunner.js"></script>
|
||||
|
||||
<script src="unit/core.js"></script>
|
||||
<script src="unit/support.js"></script>
|
||||
<script src="unit/callbacks.js"></script>
|
||||
<script src="unit/deferred.js"></script>
|
||||
<script src="unit/support.js"></script>
|
||||
<script src="unit/data.js"></script>
|
||||
<script src="unit/queue.js"></script>
|
||||
<script src="unit/attributes.js"></script>
|
||||
|
|
|
@ -1,111 +1,5 @@
|
|||
module("deferred", { teardown: moduleTeardown });
|
||||
|
||||
jQuery.each( [ "", " - new operator" ], function( _, withNew ) {
|
||||
|
||||
function createDeferred() {
|
||||
return withNew ? new jQuery._Deferred() : jQuery._Deferred();
|
||||
}
|
||||
|
||||
test("jQuery._Deferred" + withNew, function() {
|
||||
|
||||
expect( 11 );
|
||||
|
||||
var deferred,
|
||||
object,
|
||||
test;
|
||||
|
||||
deferred = createDeferred();
|
||||
|
||||
test = false;
|
||||
|
||||
deferred.done( function( value ) {
|
||||
equals( value , "value" , "Test pre-resolve callback" );
|
||||
test = true;
|
||||
} );
|
||||
|
||||
deferred.resolve( "value" );
|
||||
|
||||
ok( test , "Test pre-resolve callbacks called right away" );
|
||||
|
||||
test = false;
|
||||
|
||||
deferred.done( function( value ) {
|
||||
equals( value , "value" , "Test post-resolve callback" );
|
||||
test = true;
|
||||
} );
|
||||
|
||||
ok( test , "Test post-resolve callbacks called right away" );
|
||||
|
||||
deferred.cancel();
|
||||
|
||||
test = true;
|
||||
|
||||
deferred.done( function() {
|
||||
ok( false , "Cancel was ignored" );
|
||||
test = false;
|
||||
} );
|
||||
|
||||
ok( test , "Test cancel" );
|
||||
|
||||
deferred = createDeferred().resolve();
|
||||
|
||||
try {
|
||||
deferred.done( function() {
|
||||
throw "Error";
|
||||
} , function() {
|
||||
ok( true , "Test deferred do not cancel on exception" );
|
||||
} );
|
||||
} catch( e ) {
|
||||
strictEqual( e , "Error" , "Test deferred propagates exceptions");
|
||||
deferred.done();
|
||||
}
|
||||
|
||||
test = "";
|
||||
deferred = createDeferred().done( function() {
|
||||
|
||||
test += "A";
|
||||
|
||||
}, function() {
|
||||
|
||||
test += "B";
|
||||
|
||||
} ).resolve();
|
||||
|
||||
strictEqual( test , "AB" , "Test multiple done parameters" );
|
||||
|
||||
test = "";
|
||||
|
||||
deferred.done( function() {
|
||||
|
||||
deferred.done( function() {
|
||||
|
||||
test += "C";
|
||||
|
||||
} );
|
||||
|
||||
test += "A";
|
||||
|
||||
}, function() {
|
||||
|
||||
test += "B";
|
||||
} );
|
||||
|
||||
strictEqual( test , "ABC" , "Test done callbacks order" );
|
||||
|
||||
deferred = createDeferred();
|
||||
|
||||
deferred.resolveWith( jQuery , [ document ] ).done( function( doc ) {
|
||||
ok( this === jQuery && arguments.length === 1 && doc === document , "Test fire context & args" );
|
||||
});
|
||||
|
||||
// #8421
|
||||
deferred = createDeferred();
|
||||
deferred.resolveWith().done(function() {
|
||||
ok( true, "Test resolveWith can be called with no argument" );
|
||||
});
|
||||
});
|
||||
} );
|
||||
|
||||
jQuery.each( [ "", " - new operator" ], function( _, withNew ) {
|
||||
|
||||
function createDeferred( fn ) {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue