jQuery.quando ()

Se non vengono passati argomenti a jQuery.when(), restituirà una Promessa risolta.

Se un singolo Differito viene passato ajQuery.when(), il suo oggetto Promise (un sottoinsieme dei metodi Differiti) viene restituito dal metodo. È possibile chiamare metodi aggiuntivi dell’oggetto Promise per allegare callback, ad esempiodeferred.then. Quando il Differito viene risolto o rifiutato, di solito dal codice che ha creato il Differito in origine, verranno chiamati i callback appropriati. Per esempio, il jqXHR oggetto restituito da jQuery.ajax() è una Promessa-compatibile oggetto e può essere utilizzato in questo modo:

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

Se un singolo argomento viene passato al jQuery.when() e non è un Differita o una Promessa, sarà trattato come un deliberato Differite e qualsiasi doneCallbacks allegato verrà eseguito immediatamente. I doneCallbacks sono passati l’argomento originale. In questo caso qualsiasi failCallbacks che potresti impostare non viene mai chiamato poiché il Differito non viene mai rifiutato. Per esempio:

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

Se non si passa è alcun argomento a tutti, jQuery.when() tornerà risolto promessa.

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

Nel caso in cui più Differita gli oggetti sono passati per jQuery.when(), il metodo restituisce la Promessa di un nuovo “master” Differita oggetto che traccia lo stato di aggregazione di tutte le Deferreds è stato superato. Il metodo risolverà il suo master differito non appena tutti i differiti si risolvono, o rifiuterà il master differito non appena uno dei Differiti viene rifiutato. Se il master Differito viene risolto, vengono eseguiti i doneCallbacks per il master Differito. Gli argomenti passati ai doneCallbacks forniscono i valori risolti per ciascuno dei Deferred e corrispondono all’ordine in cui i Deferred sono stati passati a jQuery.when(). Biru:

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

nel caso In cui la Differita è stata risolta con nessun valore, corrispondente doneCallback argomento sarà indefinito. Se un differito risolto a un singolo valore, l’argomento corrispondente manterrà quel valore. Nel caso in cui un Differito risolto a più valori, l’argomento corrispondente sarà una matrice di tali valori. Biru:

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. Gli argomenti passati al failCallbacks corrispondono alla firma del failCallback per il Differito che è stato rifiutato. Se è necessario eseguire un’elaborazione aggiuntiva per questo caso, ad esempio l’annullamento di eventuali richieste Ajax non completate, è possibile mantenere i riferimenti agli oggetti jqXHR sottostanti in una chiusura e ispezionarli/annullarli nel failCallback.



Lascia un commento

Il tuo indirizzo email non sarà pubblicato.