jQuery Attendere fino al termine delle chiamate asincrone asincrone

Ciao, ho 2 chiamate ajax nel mio script, ho bisogno che eseguano asnyc per risparmiare tempo, ma ho bisogno che il secondo attenda fino al termine del primo.

$.ajax({ type: "POST", url: "getText.asmx/ws_getText", data: parO1, contentType: "application/json; charset=utf-8", dataType: "json", success: function (msg) { alert(msg.d.data); } , error: function () { chyba("chyba v požadavku", "df"); } }); if (parO2.length > 0) { $.ajax({ type: "POST", url: "getText.asmx/ws_getText", data: parO2, contentType: "application/json; charset=utf-8", dataType: "json", success: function (msg) { /*WAIT UNTIL THE FIRST CALL IS FINISHED AND THAN DO SOMETHING*/ } , error: function () { chyba("chyba v požadavku", "df"); } }); 

Quindi qualche idea? Grazie

Se si utilizza jQuery 1.5+, è ansible utilizzare jQuery.when() per ottenere ciò. Qualcosa di simile (abbreviato l’ajax chiama per brevità, basta passare gli oggetti come si fa sopra)

 $.when($.ajax("getText.asmx/ws_getText"), $.ajax("getText.asmx/ws_getText")).done(function(a1, a2){ // a1 and a2 are arguments resolved for the // first and second ajax requests, respectively var jqXHR = a1[2]; // arguments are [ "success", statusText, jqXHR ] }); 

Non si sa in quale ordine verranno restituiti, quindi se lo si arrotolasse a mano, bisognerebbe controllare lo stato dell’altra richiesta e attendere fino al suo ritorno.

È necessario colbind la seconda chiamata per essere contenuta nella richiamata della prima chiamata ajax. Così:

 success: function(msg) { alert(msg.d.data); if(par02.length > 0) { // Your 2nd ajax call } }, 

Poiché JavaScript non viene eseguito in più thread sul client, non è ansible bloccare il thread finché non vengono soddisfatte determinate condizioni.

Utilizzando jquery

 $.ajax({ type: "POST", async:false, // ** CHANGED ** url: "getText.asmx/ws_getText", data: parO1, contentType: "application/json; charset=utf-8", dataType: "json", success: function (msg) { alert(msg.d.data); } , error: function () { chyba("chyba v požadavku", "df"); } }); 

Ecco un’altra risposta sull’esecuzione di richieste dual ajax. Come Tejs, l’utente effettua una chiamata ajax all’interno del metodo di successo …

Il poster afferma che è meglio avere il metodo di successo per lanciare una nuova richiesta Ajax … ”

Avere due chiamate $ .ajax () in uno script