jQuery.când ()

dacă nu sunt transmise argumente lajQuery.when(), va returna o promisiune rezolvată.

dacă un singur amânat este trecut lajQuery.when(), obiectul promis (un subset al metodelor amânate) este returnat prin metodă. Metode suplimentare ale obiectului promisiunii pot fi apelate pentru a atașa callback-uri, cum ar fi deferred.then. Când amânarea este rezolvată sau respinsă, de obicei prin codul care a creat inițial amânarea, vor fi apelate apelurile corespunzătoare. De exemplu, obiectul jqxhr returnat de jQuery.ajax() este un obiect compatibil cu promisiunea și poate fi folosit astfel:

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

dacă un singur argument este trecut la jQuery.when() și nu este un amânat sau o promisiune, acesta va fi tratat ca un amânat rezolvate și orice donecallbacks atașat va fi executat imediat. DoneCallbacks sunt transmise argumentul inițial. În acest caz, orice failCallbacks s-ar putea seta nu sunt numite, deoarece amânat nu este respins. De exemplu:

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

dacă nu-i transmiteți niciun argument, jQuery.when() va returna o promisiune rezolvată.

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

în cazul în care mai multe obiecte amânate sunt transmise la jQuery.when(), metoda returnează promisiunea de la un nou obiect amânat „master” care urmărește starea agregată a tuturor amânărilor pe care le-a trecut. Metoda își va rezolva stăpânul amânat de îndată ce toate amânările rezolvă sau respinge maestrul amânat de îndată ce unul dintre amânări este respins. Dacă master amânat este rezolvată, doneCallbacks pentru Master amânat sunt executate. Argumentele transmise doneCallbacks furnizează valorile rezolvate pentru fiecare dintre Deferreds, și se potrivește cu ordinea Deferreds au fost transmise la jQuery.when(). De exemplu:

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

în cazul în care o amânare a fost rezolvată fără valoare, argumentul donecallback corespunzător va fi nedefinit. În cazul în care un amânat rezolvate la o singură valoare, argumentul corespunzător va deține această valoare. În cazul în care un amânat rezolvat la mai multe valori, argumentul corespunzător va fi o matrice a acestor valori. De exemplu:

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. Argumentele transmise failCallbacks se potrivesc cu semnătura failCallback pentru amânat care a fost respins. Dacă trebuie să efectuați procesare suplimentară pentru acest caz, cum ar fi anularea oricăror cereri Ajax neterminate, puteți păstra referințele la obiectele jqxhr subiacente într-o închidere și le puteți inspecta/anula în failCallback.



Lasă un răspuns

Adresa ta de email nu va fi publicată.