In meiner AngularJS
Anwendung habe ich ein Array von Parametern (z. B. einige IDs), die als Parameter für eine Ajax-Anrufwarteschlange verwendet werden sollten. Das Problem ist, dass Array mehr als 600 Elemente enthalten kann und wenn ich den Ajax-Aufruf nur rekursiv unter Verwendung der forEach
-Schleife durchführe, reagiert die Browserseite möglicherweise nicht mehr, bevor die einzelnen Anforderungen aufgelöst werden, da jede der Antworten die Ansicht aktualisiert. Gibt es eine Technik, die es erlaubt, Ajax-Anfragen z. B. asynchron zu 5 Anfragen gleichzeitig zu senden, und erst dann, wenn diese beendet sind, die nächsten 5?JavaScript, AngularJS - Senden mehrerer simultaner Ajax-Aufrufe
Antwort
ich beste Lösung denken wäre, um den Endpunkt zu ändern, um eine Reihe von IDs zu erlauben, aber ich denke, das ist keine Option. Sie können Versprechen verwenden, um die Anzahl der gleichzeitigen Anfragen zu begrenzen:
Dies ist eine rekursive Funktion, also seien Sie gewarnt. Ich würde dies stark debuggen, bevor ich es in Produktion bringe.
Sie werden auch müssen wahrscheinlich Ihre makeAjaxCall
Funktion ändern, um ein Versprechen zurück, wenn es nicht bereits der Fall ist, oder das Versprechen Objekt, um es passieren, so dass es gelöst werden kann, wenn der Ajax-Aufruf
Dies hat den Trick! –
Werfen Sie einen Blick auf $q.all(). Dadurch können Sie einen Rückruf ausführen, wenn mehrere Anfragen beendet wurden. Daher können Sie eine begrenzte Anzahl von Anfragen rekursiv ausführen, bis alle Artikel verarbeitet sind.
die Frage erneut lesen - OP möchte die Anzahl der aktiven Anfragen begrenzen –
Sie haben Recht. Aber meine Idee war, die 600 Anfragen zu partitionieren und eine Rekursion zu verwenden, wo die nächsten 'n' Anfragen ausgelöst werden, wenn der Erfolgsrückruf aufgerufen wird. – kenda
scheint wie die "Antwort: fehlte diese Information –
Ja!
Werfen Sie einen Blick auf dieses Modul: https://github.com/caolan/async
- 1. Senden mehrerer Werte durch Javascript
- 2. Senden mehrerer GET-Anforderungen mit wechselnden Parameter in AngularJS
- 3. Simultaner Datenzugriff von verschiedenen Threads
- 4. Lösen simultaner Gleichungen in Python
- 5. Senden mehrerer Kontrollkästchen Optionen
- 6. Senden/Senden mehrerer Formulare in jQuery
- 7. Handhabung mehrerer Navigationsleiste in angularjs
- 8. Senden mehrerer Dateien über Bluetooth
- 9. Senden mehrerer Pings mit Python
- 10. Senden mehrerer Medien mit Tweepy
- 11. Senden mehrerer Variablen von JS nach PHP
- 12. Integration mehrerer JavaScript-Anwendungen
- 13. Hinzufügen mehrerer IDs Javascript
- 14. Bearbeitung simultaner Uploads in der Datenbank
- 15. Code zur Lösung simultaner modularer Gleichungen?
- 16. Wie aktualisieren sich die Punkte auf diesem Sportticker ohne Ajaxaufrufe?
- 17. AngularJS withCredentials nicht senden
- 18. AngularJS Validierungsnachrichten beim Senden
- 19. AngularJS Formular Senden funktioniert nicht
- 20. Verhindern mehrerer Formularübermittlungsfehler über deaktiviertes Senden
- 21. AngularJS: Verknüpfen mehrerer Bereichsvariablen in externen Vorlage
- 22. Übersetzen mehrerer translationIds mit der AngularJS-Übersetzungsrichtlinie
- 23. AngularJS: Erstellen mehrerer Fabriken für jeden Endpunkt?
- 24. Mehrere Radiobuttons innerhalb mehrerer wiederholter Objekte - AngularJS
- 25. Setzen mehrerer Cookies in Javascript
- 26. Einrichten mehrerer abhängiger Elemente (JavaScript)
- 27. javascript Berechnung mehrerer Felder Felder
- 28. Javascript - Verkettung mehrerer NodeLists zusammen
- 29. Bedienung mehrerer JavaScript Spiele ersetzen
- 30. Senden mehrerer Arrays in mehreren Arrays in Angular js
tun vervollständigt Sie aktualisieren müssen Die Aussicht ist doch fertig oder nach jedem fertig? Promise.all ?? –
@IlyaNovojilov - oder eine dritte Option, nach jedem "Batch" von 5 sind abgeschlossen –
Warten Sie, planen Sie 600 Anfragen senden? – Bergi