Wir haben ein Fenster mit Suchfeld. Jedes Mal, wenn der Benutzer etwas eingibt, wird eine Suche durchgeführt.RxJava führt nur ein Observable auf einmal aus
Such-Ereignis wird in Datenstrom übersetzt.
Bei jeder neuen Suche müssen wir den asynchronen Netzwerkbetrieb starten und den vorherigen Vorgang schließen. Wie archiviert man diesen Effekt?
Edit1: Hier ist, was ich versucht habe. Es führt alle Observablen aus! Nicht der einzige letzte, wo ist ein Fehler?
PublishSubject<Integer> subject = PublishSubject.create();
subject.switchMap(integer -> Observable.fromCallable(() -> {
try {
Thread.sleep(500);
} catch (InterruptedException e) {
e.printStackTrace();
}
return "-" + integer + "-";
})).subscribe(s -> System.out.print(s));
for (int i = 0; i < 30; i++) subject.onNext(i);
Ich bin selbst noch ein Anfänger, aber könnten Sie statt dessen stattdessen die Sucheingabe des Benutzers beobachten und diese entprellen und dann mit der entlarvten Benutzereingabe Suchen durchführen? – Andreas
@Andreas Ja, es ist eine Hälfte von dem, was ich brauche. Es muss auch nur eine Ausführung gleichzeitig sein usw. jeder neue Wert löscht vorhergehende – dooplaye
Sie können sowohl 'debounce' als auch' switchMap' machen, um die Suche nach jedem Tastendruck zu vermeiden und alte Suchen abzubrechen. – akarnokd