У меня есть два потока, сигнализирующие о смене условий. Мне нужен Observable, который будет стрелять true
, когда все условия повернутся true
. false
, когда любой из них поворачивается false
. Если некоторые из условий false
, а другое изменяется на false
, мне не нужно поднимать события.
Вот как я это делаю:
// Introducing current states
private bool cond1 = false;
private bool cond2 = false;
void MyHandlingMethod(IObservable<bool> c1, IObservable<bool> c2)
{
c1.Subscribe(b => _state1 = b);
c2.Subscribe(b => _state2 = b);
var c3 = c1.Merge(c2).Select(_ => _cond1 && _cond2);
c3.Subscribe(b => /* some action goes here /*);
// ...
}
Я хочу знать, правильно ли это решить мою проблему, и если есть какие-то ошибки. Например, c3 подписывает огонь перед c1 и c2 из-за асинхронного характера rx.