jQuery.když ()

pokud nejsou předány žádné argumenty jQuery.when(), vrátí vyřešený slib.

Pokud je jeden odložený předán jQuery.when(), je jeho objekt Promise (podmnožina odložených metod) vrácen metodou. Další metody objektu Promise mohou být volány pro připojení zpětných volání, například deferred.then. Když je odložené vyřešeno nebo odmítnuto, obvykle kódem, který původně vytvořil odložené, budou vyvolána příslušná zpětná volání. Například, jqXHR objekt vrácený jQuery.ajax() je Slib-kompatibilní objekt a mohou být použity tímto způsobem:

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

Pokud jediný argument je předán do jQuery.when() a to není Odložené, nebo Slib, bude zacházeno jako vyřešena Odložené a žádné doneCallbacks připojen, bude okamžitě popraven. DoneCallbacks jsou předány původní argument. V tomto případě jsou všechny failCallbacks, které můžete nastavit, nikdy volány, protože odložená není nikdy odmítnuta. Například:

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

Pokud nechcete projít to žádné argumenty, jQuery.when() vrátí vyřešen slib.

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

V případě, že více Odložené předměty jsou předány do jQuery.when() metoda vrátí Slíbit, že od nového „master“ Odložený objekt, který sleduje celkový stav všech Deferreds byl předán. Metoda vyřeší jeho master odloženo, jakmile všechny odložení vyřešit, nebo odmítnout master odloženo, jakmile jeden z odložení je odmítnut. Pokud je master odloženo vyřešeno, provádí se zpětné volání pro master odloženo. Argumenty předané donecallbackům poskytují vyřešené hodnoty pro každou z Deferreds a odpovídají pořadí, v jakém byly Deferreds předány jQuery.when(). Příklad:

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

V případě Odložené byl vyřešen s žádnou hodnotu, odpovídající doneCallback argument bude nedefinovaná. Je-li odloženo vyřešeno na jednu hodnotu, odpovídající argument bude mít tuto hodnotu. V případě, že odložené vyřešeno na více hodnot, odpovídající argument bude pole těchto hodnot. Příklad:

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. Argumenty předané failcallbackům odpovídají podpisu failcallbacku pro odložené, které bylo odmítnuto. Pokud potřebujete provést další zpracování pro tento případ, jako je zrušení jakékoliv nedokončené Ajax požadavky, můžete mít odkazy na základní jqXHR objekty v uzavření a zkontrolujte/zrušte je v failCallback.



Napsat komentář

Vaše e-mailová adresa nebude zveřejněna.