Modélisation RxJS if else contrôle des structures avec des opérateurs Observables

Est-il possible de modéliser des structures de contrôle if/else via des opérateurs RxJS. Que j'ai compris que nous pourrions utiliser Observables.filter() pour simuler une branche IF, mais je ne suis pas sûr si nous simulons une branche ELSE via l'un des opérateurs observables.

25
demandé sur Artur Ciocanu 2015-09-15 22:44:24

1 réponses

Il y a quelques opérateurs que vous pourriez utiliser pour émuler ceci:

Dans l'ordre de très probablement ce que vous demandez fo

Partition

//Returns an array containing two Observables
//One whose elements pass the filter, and another whose elements don't

var items = observableSource.partition((x) => x % 2 == 0);

var evens = items[0];
var odds = items[1];

//Only even numbers
evens.subscribe();

//Only odd numbers
odds.subscribe();

GroupBy

//Uses a key selector and equality comparer to generate an Observable of GroupedObservables
observableSource.groupBy((value) => value % 2, (value) => value)
  .subscribe(groupedObservable => {
    groupedObservable.subscribe(groupedObservable.key ? oddObserver : evenObserver);
  });

Si

//Propagates one of the sources based on a particular condition
//!!Only one Observable will be subscribed to!!
Rx.Observable.if(() => value > 5, Rx.Observable.just(5), Rx.Observable.from([1,2, 3]))

Affaire (disponible uniquement dans RxJS 4)

//Similar to `if` but it takes an object and only propagates based on key matching
//It takes an optional argument if none of the items match
//!!Only one Observable will be subscribed to!!
Rx.Observable.case(() => "blah",
{
  blah : //..Observable,
  foo : //..Another Observable,
  bar : //..Yet another
}, Rx.Observable.throw("Should have matched!"))
42
répondu paulpdaniels 2016-12-16 18:00:33