Как наблюдать за конкретной комбинацией событий?

1

У меня есть несколько наблюдаемых, сделанных с помощью Rx FromEventPattern, например:

var a = Observable.FromEventPattern(...); // event A
var b = Observable.FromEventPattern(...); // event B
var c = Observable.FromEventPattern(...); // event C

Как я могу наблюдать определенные последовательности этих событий?

Например, я хочу наблюдать случай, когда A тогда C произошел, но без B между ними, в определенный ограниченный промежуток времени.

Или: ABC тогда ABC тогда просто B.

  • 1
    Катись самостоятельно :)
  • 0
    @Moo-Juice Му-сок, уточни пожалуйста :)
Теги:
events
reactive-programming
system.reactive

1 ответ

2
Лучший ответ

Это работает для вас?

var query = a.Select(_ => c.TakeUntil(b)).Switch();

Будет ли это работать в течение 5 секунд?

var query = a
    .Select(_ => c
        .TakeUntil(b)
        .TakeUntil(Observable.Timer(TimeSpan.FromSeconds(5.0))))
    .Switch();

В противном случае вам нужно будет посмотреть на операторы Window или Join.

  • 0
    Спасибо, это выглядит круто, я поэкспериментирую с этим. Есть ли способ ограничить его во времени, например, A -> [no B] -> C withing 5 secs ?
  • 1
    @avo - я добавил дополнительное решение.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню