jQuery.wanneer ()

als er geen argumenten worden doorgegeven aan jQuery.when(), zal het een opgeloste belofte retourneren.

als een enkele uitgestelde methode wordt doorgegeven aan jQuery.when(), wordt het Promise-object (een subset van de uitgestelde methoden) geretourneerd door de methode. Extra methoden van het Promise object kunnen aangeroepen worden om callbacks bij te voegen, zoals deferred.then. Wanneer de uitgestelde is opgelost of afgewezen, meestal door de code die de uitgestelde oorspronkelijk gemaakt, de juiste callbacks zal worden aangeroepen. Bijvoorbeeld, de jqXHR object wordt geretourneerd door jQuery.ajax() is een Belofte-compatibele object en kan worden gebruikt op deze manier:

1
2
3
$.when( $.ajax( "test.aspx" ) ).then(function( data, textStatus, jqXHR ) {
alert( jqXHR.status ); // Alerts 200
});

Als het een argument is doorgegeven aan jQuery.when() en het is niet een Uitgestelde of een Belofte, zal worden behandeld als een opgelost Uitgestelde en een doneCallbacks aangesloten worden onmiddellijk uitgevoerd. De doneCallbacks zijn geslaagd voor het oorspronkelijke argument. In dit geval worden eventuele failCallbacks die je zou kunnen instellen nooit aangeroepen omdat de uitgestelde nooit wordt afgewezen. Bijvoorbeeld:

1
2
3
$.when( { testing: 123 } ).done(function( x ) {
alert( x.testing ); // Alerts "123"
});

Als u niet slaagt voor het eventuele argumenten op alle jQuery.when() terug opgelost belofte.

1
2
3
$.when().then(function( x ) {
alert( "I fired immediately" );
});

In het geval waarin meerdere Uitgestelde objecten worden doorgegeven jQuery.when() de methode geeft de Belofte van een nieuwe “master” Uitgestelde object dat houdt de totale staat van alle de Deferreds het is doorgegeven. De methode zal zijn master uitstellen oplossen zodra alle Deferreds oplossen, of de master uitstellen afwijzen zodra een van de Deferreds wordt afgewezen. Als de Master uitgestelde is opgelost, worden de doneCallbacks voor de master uitgestelde uitgevoerd. De argumenten die worden doorgegeven aan de doneCallbacks geven de gevonden waarden voor elk van de Deferreds, en komen overeen met de volgorde waarin de Deferreds werden doorgegeven aan jQuery.when(). Bijvoorbeeld:

1
2
3
4
5
6
7
8
9
10
var d1 = $.Deferred();
var d2 = $.Deferred();
$.when( d1, d2 ).done(function ( v1, v2 ) {
console.log( v1 ); // "Fish"
console.log( v2 ); // "Pizza"
});
d1.resolve( "Fish" );
d2.resolve( "Pizza" );

In het geval van een Uitgestelde werd opgelost met geen waarde, de bijbehorende doneCallback argument worden niet gedefinieerd. Als een uitgestelde opgelost naar een enkele waarde, zal het overeenkomstige argument die waarde bevatten. In het geval dat een uitgestelde opgelost naar meerdere waarden, zal het bijbehorende argument een array van die waarden zijn. Bijvoorbeeld:

1
2
3
4
5
6
7
8
9
10
11
12
13
var d1 = $.Deferred();
var d2 = $.Deferred();
var d3 = $.Deferred();
$.when( d1, d2, d3 ).done(function ( v1, v2, v3 ) {
console.log( v1 ); // v1 is undefined
console.log( v2 ); // v2 is "abc"
console.log( v3 ); // v3 is an array
});
d1.resolve();
d2.resolve( "abc" );
d3.resolve( 1, 2, 3, 4, 5 );

In the multiple-Deferreds case where one of the Deferreds is rejected, jQuery.when() immediately fires the failCallbacks for its master Deferred. Note that some of the Deferreds may still be unresolved at that point. De argumenten doorgegeven aan de failCallbacks komen overeen met de handtekening van de failCallback voor de uitgestelde die werd afgewezen. Als u extra verwerking voor deze zaak moet uitvoeren, zoals het annuleren van onvoltooide Ajax-verzoeken, kunt u verwijzingen naar de onderliggende jqxhr-objecten in een afsluiting bewaren en inspecteren/annuleren in de failCallback.



Geef een antwoord

Het e-mailadres wordt niet gepubliceerd.