Meine Aufgabe ist es, den Teilnehmer anzurufen, wenn zwei oder mehr Ereignisse während der Zeitüberschreitung auftreten. Erstes Ereignis, das eine Zeitüberschreitung auslöst, wenn während der Zeitüberschreitung nichts passiert - es wird erneut mit der nächsten gestartet und so weiter. Ich verwende folgende Konstruktion:RxJava: zwei Anrufe während der Zeitüberschreitung
boolean trigger = false;
Observable.interval(...)
.filter(...)
.timeout(10, TU.SECONDS, Observable.just(false))
.subscribe(par ->
if (par){
if (trigger){
twoTimesInTimeout();
} else {
trigger = true;
}
} else {
trigger = false;
}
)
Vielleicht gibt es eine Möglichkeit, ohne Abzug zu gehen?
Bitte klären. Was willst du passieren? Die "Trigger" -Variable ist sehr unfunktionell, d.h. gegen die Ziele von RxJava. Es gibt definitiv einen Weg, dies ohne diese Variable zu tun. Aber ich bin mir nicht sicher, was du zu tun versuchst. Vielleicht ein Beispiel hinzufügen. – Andy
Ich habe eine Zeitüberschreitung, sagen wir 10 Sekunden. Dann habe ich ein Observable, das A | erzeugt B | C. Ich filtere Observable für A. Wenn ich zwei oder mehr A in 10 Sekunden habe, muss ich den Subscriber anrufen. –
Aber es ist nicht wie ein 'buffer()', weil ich einen Timer brauche, der 'A' - abhängig ist. Es beginnt erst, wenn zuerst 'A' produziert wird. Wie ein Sicherheitssystem: Wenn es etwas Verdächtiges sieht, geht es für 10 Sekunden in den Warnmodus. Wenn in 10 Sekunden nichts passiert - beruhigt es sich. Wenn etwas passiert - der Wecker geht an. –