jQuery Ajax: wie zu warten, bis *async* Anfragen Erfolg abgeschlossen, bevor Sie fortfahren?

Ich habe ein problem damit, ajax schnell und funktionsfähig. Hier ist die pseudo - /Prototyp-code:

function blah1(arg1){//arg1 is an array, roughly 10 elements

var arr[];

$.each(arg1, function(i){
//blah code

    $.ajax({
        //blah options
        async:   true,
        success: function(data){
            arr[i] = data.someInt;
        }//end success
    });//end ajax
}//end each

return arr;
}//end function

Grundsätzlich, ich sende eine ajax und müssen die zurückgegebenen Daten für die weitere Verarbeitung.

Wenn ich async auf true, wird die Funktion sofort wieder leer 'arr' array, so wird das ganze Skript fehlschlägt.
Aber wenn ich async auf false gesetzt, dann funktioniert es, aber dauert sehr lange.

Habe ich diesen $.ajaxQueue(); Sache, aber ehrlich gesagt, ich verstehe es nicht, und ich weiß nicht, ob es funktionieren wird.

Die Frage ist also, Erstens, gibt es eine Möglichkeit, ich kann asynchron senden der ajax-Anfragen zur gleichen Zeit und lassen Sie die Funktion warten und return arr [], nachdem alle ajax fertig sind? Wenn nicht, wird die ajaxQueue in meinem Fall? (grobes Beispiel bitte?)

  • Kannst du nicht senden Sie alle in einem einzigen AJAX-request und analysieren Sie die Ergebnisse für alle 10ish Antworten?
  • Das ist möglich, aber das heißt ich werde zu tun haben, die Bearbeitung auf der server-Seite, und das ist eine ganze Durcheinander für mich, Tauchen Sie ein in. Ich würde es vorziehen, es zu tun auf jQuery.
  • 1 Antrag besser ist dann 10+ Anfragen. Sie wird am Ende schlagen die Browser request limit.
  • es ist ein browser-request limit?
  • Es ist browser-spezifisch last ich habe mit IE8 Begrenzung auf 6 paralell-verbindungen beim FF-Begrenzung 8. Die Begrenzung auf älteren Browsern ist 2.
InformationsquelleAutor JQonfused | 2011-03-23
Schreibe einen Kommentar