Warteschlange AJAX-Anrufe

7

Hallo Ich mache eine horizontal scrollende Website wie: Ссылка

Anstatt jedoch eine große HTML-Datei zu haben, lege ich nach dem Laden der Homepage mit jQuery .load () in die Kinder von zu Hause.

Gegenwärtig bin ich für-jedes div und ajax in der URL, die im Titel sitzt. Aber der AJAX kehrt außer Betrieb zurück, und da ich weitere Seiten hinzufüge, mag spanging der Server nicht mit 30+ http: // Anfragen.

Wie synchronisiere ich die AJAX-Aufrufe, d. h. warte, bis der erste vor einer Anfrage zurückkommt, oder zwei gleichzeitig.

Ich habe geputzt und kann nicht herausfinden, was ich brauche.

Dies ist mein HTML:

%Vor%

Und mein JS:

%Vor%

Gibt es ein Plugin, kann ich einfach Funktionen zu einer Queue hinzufügen, und damit umgehen?

    
Will Hancock 25.01.2011, 18:48
quelle

2 Antworten

18

Der Trick besteht darin, die Rückrufe zu verwenden. Du machst einen Ajax-Call und auf seinen Callback-Erfolg schaffst du den nächsten.

Um dies zu tun, füge sie einfach alle zu einer Queue hinzu und habe einen Wrapper darum, der sie nacheinander schickt.

Ich schrieb vor ein paar Tagen. Ich zeige Ihnen eine Implementierung in einer Sekunde.

%Vor%

Entschuldigung für die Codewand. Implementiere einfach deine eigene Task und Handler. Der Puffer funktioniert so lange, wie der Handler das zweite Argument (den Callback) aufruft, wenn er mit der Bearbeitung der Aufgabe fertig ist.

Übergeben Sie dann einfach eine Aufgabe und einen Handler. Der Handler führt den Ajax aus und ruft den Callback aus dem Puffer auf, wenn der Ajax zurückkehrt.

Wenn Ihr Ladevorgang lange dauert, dann dauert es sehr lange, bis alle 30 geladen sind. Der Punkt von ajax ist, dass der Server Dinge parallel macht.

Eine viel bessere Lösung in Ihrem Fall ist es, 30 Anfragen zu stellen und dann die Ergebnisse zu erfassen und sicherzustellen, dass die Ergebnisse Ihrer Ajax-Anrufe nur an die Domäne in der Reihenfolge angehängt werden. Dies beinhaltet die Verwendung von $ .ajax und das Hinzufügen der Reihenfolge der Reihenfolge.

Auf diese Weise wird der Server es so schnell wie es geht tun und Sie können es in der Reihenfolge Server, sobald Sie es bekommen. Alternativ, wenn die Dinge, die Sie tun, schnell sind, dann hat das Anordnen in einem Puffer keine Nachteile.

    
Raynos 25.01.2011, 18:52
quelle
1

Die meisten Browser können 6 oder mehr gleichzeitige Ajax-Anfragen an eine einzelne Domain bearbeiten.
Ссылка

Wenn Ihr Skript 30 Ajax-Anfragen gleichzeitig platziert, werden die ersten 6 Anfragen sehr schnell ausgeführt. Danach kann der Browser willkürliche Wartezeiten von bis zu 5 Sekunden zuweisen. Chrome ist ein Paradebeispiel für dieses Verhalten.

Anfragen 1-6 kehren in 5 ms zurück.

Anfragen 7-12 kehren in 5.005 ms zurück.

Anfragen 11-18 kehren in 10.005 ms zurück.

Anfragen 19-24 kommen in 15.005 ms zurück.

Anfragen 25-30 kehren in 20.005 ms zurück.

Ich empfehle, eine Warteschlange mit Funktionsrückrufen zu erstellen, um alle AJAX-Anfragen Ihrer Anwendung zu bearbeiten und nicht mehr als sechs davon gleichzeitig zu verarbeiten.

%Vor% %Vor%
    
Jason Williams 02.08.2017 17:00
quelle