Ho due flussi che segnalano quando alcune condizioni cambiano. Ho bisogno di un osservabile che sparerà true
quando tutte le condizioni turno true
. false
quando uno di essi diventa false
. Se alcune delle condizioni sono false
e altre modifiche a false
, non è necessario aumentare gli eventi.Combinazione di osservabili booleani
Ecco come lo sto facendo:
// 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 /*);
// ...
}
voglio sapere se è il modo giusto di risolvere il mio problema e se ci sono eventuali pitfals. Ad esempio, gli scatti di sottoscrizione c3 prima di c1 e c2 a causa della natura asincrona di rx.
Humbug - Ho guardato oltre le API per anni e non sono riuscito a trovarlo! Tuttavia, probabilmente si desidera anche 'DistinctUntilChanged'. –
[My go-to RX API reference] (http://www.introtorx.com/content/v1.0.10621.0/12_CombiningSequences.html) - l'esempio CombineLatest è questa domanda esatta (!) – AlexFoxGill
Non penso che questo sia completamente soddisfa i requisiti. Solo se tutti i valori sono falsi se la sequenza produce un valore falso, altrimenti rimani in silenzio. Se tutti i valori sono veri, premere un valore vero. Questo soln spingerà false se qualsiasi valore è falso. –