jQuery.amikor ()

ha nem adunk át argumentumokat jQuery.when(), akkor egy megoldott ígéretet ad vissza.

ha egyetlen halasztott átkerül a jQuery.when(), A Promise objektum (a halasztott módszerek egy részhalmaza) a metódussal kerül visszaadásra. Az ígéret objektum további módszereit hívhatjuk meg visszahívások csatolására, például deferred.then. Amikor a halasztott megoldódik vagy elutasításra kerül, általában az eredetileg halasztott kódot létrehozó kóddal, a megfelelő visszahívásokat hívják meg. Például a jQuery.ajax() által visszaadott jqxhr objektum egy ígéret-kompatibilis objektum, és így használható:

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

ha egyetlen argumentum kerül átadásra a jQuery.when() és ez nem egy halasztott vagy ígéret, akkor kell kezelni, mint egy megoldott halasztott és minden donecallbacks csatolt kerül végrehajtásra azonnal. A doneCallbacks át az eredeti érv. Ebben az esetben a beállított failcallbackeket soha nem hívják meg, mivel a halasztott soha nem utasítják el. Például:

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

ha egyáltalán nem adja át az argumentumokat, a jQuery.when() egy megoldott ígéretet ad vissza.

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

abban az esetben, ha több halasztott objektum kerül átadásra jQuery.when(), a módszer egy új “Master” halasztott objektum ígéretét adja vissza, amely nyomon követi az összes elhalasztott objektum összesített állapotát. A módszer feloldja a master halasztott, amint az összes halasztott megoldani, vagy elutasítja a master halasztott, amint az egyik halasztott elutasításra kerül. Ha a master halasztott megoldódott, a donecallbacks a master halasztott végrehajtásra kerül. A doneCallbacks-nek átadott argumentumok megadják az egyes halasztások megoldott értékeit, és megfelelnek annak a sorrendnek, amelyet a halasztások átadtak a jQuery.when() – nek. Például:

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

abban az esetben, ha egy halasztott értéket érték nélkül oldottak meg, a megfelelő donecallback argumentum meghatározatlan lesz. Ha egy halasztott megoldott egyetlen értéket, a megfelelő argumentum fogja tartani ezt az értéket. Abban az esetben, ha egy halasztott megoldott több értéket, a megfelelő argumentum lesz egy tömb ezeket az értékeket. Például:

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. A failCallbacks-hez átadott argumentumok megegyeznek az elutasított halasztott failCallback aláírásával. Ha ehhez az esethez további feldolgozást kell végrehajtania, például törölnie kell a befejezetlen Ajax-kéréseket, akkor az alapul szolgáló jqxhr-objektumokra való hivatkozásokat bezárhatja, és ellenőrizheti/törölheti őket a failCallback-ben.



Vélemény, hozzászólás?

Az e-mail-címet nem tesszük közzé.