Ich bin durchschleifen mehrere Elemente und eine Ajax-Anfrage für jeden von ihnen (mit jQuery). Ich möchte, dass sie unabhängig ausgeführt werden, aber in das DOM in der Reihenfolge auffüllen, in der sie aufgerufen wurden, nicht in der Reihenfolge, in der sie zurückgegeben werden (aus irgendeinem Grund dauern einige Anforderungen länger als andere). Irgendwelche Tipps zur Best Practice für diese Art von Ding?Pflegen Reihenfolge der Anfragen, wenn Sie mehrere Ajax Callbacks
Antwort
Die Antwort darauf war ein jQuery-Plugin namens ajaxManager. Dies tat genau das, was ich brauchte:
das ist ein defekter Link – Daniel777
Sie könnten alle Erfolgsergebnisobjekte an eine Warteschlange senden. Haben Sie einen Index, der mit der ursprünglichen Anforderung gesendet wurde, und überprüfen Sie diese Warteschlange fortlaufend auf den nächsten Index.
Aber im Allgemeinen erlauben Browser nur zwei simultane Ajax-Anfragen, so dass es sich lohnen könnte, einfach die nächste Ajax-Anfrage nach dem Erfolg der vorherigen Anfrage zu senden.
Hier ist ein Start beim Code:
var results = {}, lastProcessedIndex = 0;
var totalLength = $('a.myselector').each(function(el, index){
$.ajax({
url: $(this).attr('href'),
success: function(result){
results[index] = result; // add to results object
}
});
}).length;
var intervalId = setInterval(function(){
if(results[lastProcessedIndex]){
// use object
lastProcessedIndex++;
}
else if(totalLength == lastProcessedIndex){
clearInterval(intervalId);
}
}, 1000); // every 1 second
Ja, ich habe auch diesen jQuery Ajax-Warteschlangenmanager gefunden, was meiner Meinung nach im Grunde das ist, was Sie hier beschreiben: http://www.protofunc.com/scripts/jquery/ajaxManager/ – Chris
Ich werde mit diesem einen Stich in der Dunkelheit nehmen, aber es könnte helfen. Vielleicht könnten Sie ein globales Pufferarray erstellen und dann, wenn der AJAX zurückkehrt, können Sie das Ergebnis dem Puffer hinzufügen. Sie könnten dann einen Timer einrichten, der nach dem Auslösen den Inhalt des Puffers überprüft. Wenn sie in Ordnung sind, wird es entsprechend ausgegeben.
Nun, die Ergebnisse können in irgendeiner undefinierten Reihenfolge zurückkommen, sie sind asynchron und unterliegen den Launen des Internets und der Server.
Was Sie tun können, ist das Problem auf die gleiche Weise behandeln TCP tut über UDP. Sie verwenden Sequenzbezeichner.
Halten Sie eine Sequenzidentifikation bereit und erhöhen Sie sie jedes Mal, wenn Sie eine Anfrage senden. Wenn Anfragen zurückkommen, überprüfen Sie sie in der richtigen Reihenfolge und verarbeiten sie nur so, wie sie eintreffen. Führen Sie eine Liste der zurückgegebenen Daten in der richtigen Reihenfolge und lassen Sie sie nach jeder Aktualisierung regelmäßig überprüfen. Wenn das erste erwartet wird, sollte es die gesamte Liste bis zur ersten Lücke verarbeiten.
Bedenken Sie, dass Sie eine Anforderung verlieren könnten, daher wäre ein passendes Timeout vor der Ignorierung einer gegebenen Sequenzidentifikation angebracht.
- 1. Vermeiden Sie mehrere AJAX-Anfragen angularJS
- 2. Wie zu bestimmen, wenn mehrere Ajax Callbacks abgeschlossen sind
- 3. Werden nachfolgende AJAX-Anfragen garantiert in der richtigen Reihenfolge empfangen?
- 4. Reihenfolge der asynchronen HTTP-Anfragen
- 5. Gleiche Daten, wenn ich mehrere AJAX-Anfragen senden
- 6. Wie kann man mehrere Ajax-Anfragen verhindern?
- 7. Kann ich mehrere AJAX-Anfragen gleichzeitig haben?
- 8. Mehrere AJAX-Anfragen bei Klick blockieren
- 9. ASP.Net: Invisible Click Counter, der mehrere Ajax-Anfragen ausführt
- 10. VSTS-Webleistungstest - AJAX-Anfragen in falscher Reihenfolge aufgezeichnet?
- 11. Testen von okHttp-Anfragen mit Robolectric - Callbacks
- 12. HTML5-Datenbank - Transaktion VS executeSQL Callbacks Reihenfolge
- 13. Boost.Asio: Beenden mehrere async_recv_until() Aufrufe und haben ihre Callbacks in der Reihenfolge des Methodenaufrufs?
- 14. Wie erstellt man mehrere Callbacks?
- 15. Ajax-Cross-Domain-Anfragen
- 16. NodeJS - mehrere asynchrone HTTP-Anfragen
- 17. Sicherheit von AJAX-Anfragen
- 18. Python Twisted - mehrere Callbacks laufen
- 19. JSF/Richfaces Ajax Anfragen
- 20. Warum drosselt der Webserver Ajax-Anfragen - DDoS?
- 21. Alle AJAX-Anfragen ablehnen
- 22. Mehrere simultane Ajax-Anfragen (mit einem Callback) in jQuery
- 23. Wie behandelt PHP mehrere POST-Anfragen über AJAX?
- 24. Bash-Skript - Pflegen mehrere Instanzen ausgeführt
- 25. Debug AJAX Anfragen
- 26. Behandeln Sie mehrere Anfragen mit ICallbackEventHandler
- 27. Frage über mehrere Anfragen an einen Server mit AJAX?
- 28. Rails 3 AJAX Remote Form Callbacks
- 29. So fügen Sie mehrere Callbacks zu rolify gem hinzu
- 30. Python: Senden Sie mehrere POST-Anfragen auf der gleichen Seite
befestigen haben eine Anfrage Ordnung Feld für jeden und die in einem globalen Bit-Speicher gespeicherten Daten (vielleicht zu einem „Halte div“ anhängen) und in jedem Erfolg Anruf ein Gemeinsames Modul, das versucht, alle zu laden, wenn alle erfolgreich waren. Klingt, als würdest du ziemlich viele Mutexe haben, um Muster für dieses Design zu halten. ~~ Wie für die beste Praxis halten Sie einfach den Code sauber und lesbar. – jcolebrand