jQuery.når ()

hvis ingen argumenter sendes til jQuery.when(), vil det returnere et løst Løfte.

hvis en Enkelt Utsatt sendes til jQuery.when(), returneres Dets Løfteobjekt (en delmengde Av De Utsatte metodene) med metoden. Ytterligere metoder For Promise-objektet kan kalles for å legge ved tilbakeringinger, for eksempel deferred.then. Når Utsatt er løst eller avvist, vanligvis av koden som opprettet Utsatt opprinnelig, vil de aktuelle tilbakeanrop bli kalt. For eksempel er jqxhr-objektet returnert av jQuery.ajax() Et Løfte-kompatibelt objekt og kan brukes på denne måten:

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

hvis et enkelt argument sendes til jQuery.when()og det er ikke en utsatt eller et løfte, det vil bli behandlet som en løst utsatt og eventuelle donecallbacks vedlagt Vil Bli Henrettet umiddelbart. DoneCallbacks er bestått det opprinnelige argumentet. I dette tilfellet noen failCallbacks du kan sette aldri kalles siden Utsatt er aldri avvist. For eksempel:

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

hvis du ikke gir det noen argumenter i det hele tatt, jQuery.when()vil returnere et løst løfte.

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

i tilfelle hvor flere utsatte objekter sendes tiljQuery.when(), returnerer metoden løftet fra et nytt «master» utsatt objekt som sporer aggregattilstanden for alle utsettelsene det er bestått. Metoden vil løse sin master Utsatt så snart Alle Utsatt løse, eller avvise master Utsatt så snart En Av Utsatt er avvist. Hvis master Utsatt er løst, utføres doneCallbacks for master Utsatt. Argumentene som sendes til doneCallbacks, gir de løste verdiene for Hver Av De Utsatte, og samsvarer med Rekkefølgen De Utsatte ble sendt til jQuery.when(). Eksempelvis:

1
2
4
5
6
7/div>

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" );

i tilfelle en utsatt ble løst uten verdi, vil det tilsvarende donecallback-argumentet være udefinert. Hvis En Utsatt løst til en enkelt verdi, vil det tilsvarende argumentet holde den verdien. I tilfelle Hvor En Utsatt løst til flere verdier, vil det tilsvarende argumentet være en matrise av disse verdiene. Eksempelvis:

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. Argumentene som sendes til failCallbacks, samsvarer med signaturen til failCallback for Utsatt som ble avvist. Hvis du trenger å utføre ytterligere behandling for denne saken, for eksempel å avbryte eventuelle uferdige Ajax-forespørsler, kan du beholde referanser til de underliggende jqxhr-objektene i en lukning og inspisere / avbryte dem i failCallback.



Legg igjen en kommentar

Din e-postadresse vil ikke bli publisert.