Wie kann ich mehrere lange API-Anrufe verhindern (z. B. wenn der Benutzer mehrmals auf die Schaltfläche klickt), ohne den Status zu speichern (z. B. Speichern der Eigenschaft "isLoading").Verhindern mehrerer API-Anrufe
Antwort
Es fehlen Anforderungen hier, aber vorausgesetzt, Sie zusätzliche Anrufe vermeiden wollen, während man es ausgeführt wird, bis Anfrage Finish ist, Sie repeat()
, können take(1)
mit repeat()
und optional auch retry()
, take(1)
wird Emission auf den ersten Klick begrenzen wird wieder neu abonnieren, wenn onComplete()
- was bedeutet, die Netzwerkanforderung erfolgt, so dass Sie in der Lage sind, einzelne klicken wieder und führen Sie die Anforderung. Sie können für resubscribing mit Scheitern auch wiederholen() betrachten (das wird die Anfrage nicht wiederholen, werden aber wieder verfügbar Antrag stellen, wenn darauf geklickt)
getClicksEvents()
.take(1)
.flatMap(aVoid -> getRequestObservable())
.repeat()
.retry()
.subscribe(result -> //do your thing);
Das ist es! Aber ich benutze RxSwift, wo "repeat" -Methode fehlt: X – JaSHin
@JaSHin bist du dir sicher? https://github.com/ReactiveX/RxSwift/blob/master/RxSwift/Observables/Implementations/Repeat.swift Sie müssen nur Ihre Pakete aktualisieren. Ich weiß aber nichts über die Paketverwaltung in Swift. –
gut wie @AluanHaddad sagte, dies ist wahrscheinlich in RxSwift, aber ich bin nicht vertraut mit RxSwift. (Sie setzen das RxJava-Tag :) also hier bin ich. – yosriz
- 1. Verhindern mehrerer http-Aufrufe
- 2. Verhindern mehrerer Aufrufe im Listenverständnis
- 3. Verhindern mehrerer Anfragen von AJAX
- 4. Verhindern mehrerer Formularübermittlungsfehler über deaktiviertes Senden
- 5. Die Erstellung mehrerer GUI-Instanzen verhindern
- 6. Verhindern mehrerer DOM-Suchen in jquery
- 7. Verhindern mehrerer Schwenkbewegungen in benutzerdefiniertem UITableViewCells
- 8. VBA - Verhindern des Hinzufügens mehrerer Blätter
- 9. Kann ich überflüssiges Laden mehrerer CSS-Dateien verhindern?
- 10. htaccess Neuschreiben mehrerer Bedingungen
- 11. Verwalten mehrerer JLabel-Veranstaltungen
- 12. Ausrichten mehrerer dd-Tags
- 13. Verhindern mehrerer $ http Anfragen in Angular. Gibt es einen besseren Weg?
- 14. So verhindern Sie das Senden mehrerer Formulare beim Klicken auf die Schaltfläche "Eingabe" in der Formularvalidierung
- 15. Synchronisierung mehrerer Tasks auf einem einzelnen Thread
- 16. jQuery: Mehrere Eingaben gleichzeitig verhindern
- 17. Verhindern Schlüsselereignisse
- 18. Deadlock verhindern
- 19. Verhindern Doppeleinzug
- 20. Verhindern OnErrorNotImplementedException
- 21. Verhindern Textüberlappung
- 22. Verketten mehrerer jquery-Ereignisse ohne Rückrufe
- 23. Deaktivieren mehrerer Symbole in Dropzone beim Hochladen mehrerer Dateien
- 24. Verwendung mehrerer angepasster CursorAdapter
- 25. Zusammenführen: Ändern mehrerer Tabellen
- 26. Verknüpfen mehrerer asp.NET MultiViews
- 27. Zeiger mehrerer Funktionen
- 28. Speichern mehrerer Firebase-Referenzen
- 29. Verwenden mehrerer TableViews?
- 30. Django Einrichten mehrerer Konfigurationen
Vielleicht '' verwenden .take (1)? Schwer zu sagen, ohne mehr Kontext zu sehen. –
Ja, aber ich muss mich erneut anmelden, nachdem ein Anruf getätigt wurde. – JaSHin