jQuery.kun ()

Jos argumentteja ei siirretä jQuery.when(), se palauttaa ratkaistun lupauksen.

Jos jQuery.when(), sen Lupausobjekti (laskennallisten menetelmien osajoukko) palautetaan menetelmällä. Lupausobjektin lisätapoja voidaan kutsua kutsujen liittämiseksi, kuten deferred.then. Kun lykätty ratkaistaan tai hylätään, yleensä koodilla, joka loi lykätty alun perin, asianmukaiset takaisinsoittoja kutsutaan. Esimerkiksi jQuery.ajax() palauttama jqxhr-Olio on lupaus-yhteensopiva olio ja sitä voidaan käyttää näin:

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

Jos jQuery.when() ja se ei ole lykätty tai lupaus, se käsitellään ratkaistuna lykättynä ja siihen liitetyt donecallbacks-palautukset toteutetaan välittömästi. DoneCallbacks on läpäissyt alkuperäisen argumentin. Tässä tapauksessa mahdolliset failCallbacks voit asettaa koskaan kutsutaan, koska lykätty ei koskaan hylätty. Esimerkiksi:

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

jos sille ei anneta mitään argumentteja, jQuery.when()palauttaa selvitetyn lupauksen.

/tr>

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

JosjQuery.when(), menetelmä palauttaa lupauksen uudelta ”Master” – lykätyltä objektilta, joka seuraa kaikkien sen läpäistyjen lykkäysten yhteenlasketun tilan. Menetelmä ratkaisee master lykätty heti, kun kaikki lykkäykset ratkaista, tai hylkää master lykätty heti, kun yksi lykkäys hylätään. Jos master lykätty ratkaistaan, donecallbacks master lykätty suoritetaan. Donecallbacksille välitetyissä perusteluissa esitetään kunkin lykkäyksen selvitetyt arvot, ja ne vastaavat järjestystä, jonka mukaan lykkäys annettiin jQuery.when(). Esimerkiksi:

1
2
3
4
5
6
7
8
9

0

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

jos lykätty ratkaistiin ilman arvoa, vastaava donecallback-argumentti on määrittelemätön. Jos laskennallinen ratkaistu yhteen arvoon, vastaava argumentti pitää kyseisen arvon. Jos laskennallinen ratkaistu useita arvoja, vastaava argumentti on joukko näitä arvoja. Esimerkiksi:

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. Hylkäyspäätöksiin toimitetut perustelut vastaavat hylätyn lykkäyksen hylkäyspäätöksen allekirjoitusta. Jos sinun on tehtävä lisäkäsittelyä tässä tapauksessa, kuten peruutettava keskeneräiset Ajax-pyynnöt, voit pitää viittaukset taustalla oleviin jqXHR-objekteihin suljettuna ja tarkastaa/peruuttaa ne failcallbackissa.



Vastaa

Sähköpostiosoitettasi ei julkaista.