E 'possibile modellare se/o strutture di controllo tramite operatori RxJS. Per quanto ho capito, è possibile utilizzare Observable.filter() per simulare un ramo IF, ma non sono sicuro di simulare un ramo ELSE tramite uno degli operatori Observable.Modellazione RxJS in caso contrario strutture di controllo con operatori Observables
risposta
ci sono un paio operatori che si potrebbe usare per emulare questo:
In ordine da molto probabilmente quello che stai chiedendo fo
//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();
//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);
});
//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]))
case (disponibile solo in 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!"))
grazie per aver fornito questo elenco completo di operatori. Immagino che, a seconda del caso d'uso, posso usare uno di questi operatori per simulare "if/else". Per il mio particolare esempio 'Rx.Observable.if()' ha fatto il trucco. –
Tonnellate più operatori/dettagli nei documenti rxjs: https://github.com/Reactive-Extensions/RxJS/blob/master/doc/api/core/observable.md –
Grazie per tutti i dettagli. '' 'Rx.Observable.if()' '' con '' 'elseSource''' ha funzionato. –
- 1. Promise.all comportamento con RxJS Observables?
- 2. RxJS: Come posso fare un "se" con Observables?
- 3. Modellazione con classe caso Scala
- 4. Inserire controllo query se esiste registrazione - In caso contrario, inserirla
- 5. Angular2 Observables - Replay
- 6. Httpwebreqest funziona con Fiddler In caso contrario Timeout
- 7. Strutture di controllo di esecuzione in Brainfuck
- 8. Browserify: Utilizzare module.exports se necessario, in caso contrario esporre globale
- 9. Come scrivere un MySQL in caso contrario la dichiarazione endif?
- 10. jQuery: controlla se il valore è nella matrice, in caso affermativo, cancella, in caso contrario, aggiungi
- 11. Scala: strutture di controllo personalizzate con diversi blocchi di codice
- 12. Concatenamento di osservabili con RxJS in Angular2
- 13. Promise .all() con RxJS
- 14. I generici C# impediscono l'autoboxing delle strutture in questo caso?
- 15. Strutture dati persistenti in Scala
- 16. La definizione del formato di termine esterno di Erlang è stabile? In caso contrario, cosa usare?
- 17. Impaginazione osservabile RxJs
- 18. RxJS sequenza osservabile divisa in più uscite
- 19. Modellazione ARIMA con dati pannello
- 20. Non riesci a trovare `combineLatest` in RxJS 5,0
- 21. Esiste un'interfaccia BehaviorSubject di sola lettura in RX e in caso contrario, è una cattiva idea crearne una?
- 22. Chaining osservabili in RxJS
- 23. utenti di modellazione con Oauth 2
- 24. Creazione di un elenco filtrabile con RxJS
- 25. Modellazione di un sistema lineare con Python
- 26. Modellazione di serie temporali con dati irregolari
- 27. Come eseguire il conto alla rovescia con gli osservabili RxJS?
- 28. Sottoscrittori RxJs, passando valori nulli?
- 29. Python - Probabilità di modellazione
- 30. shareReplay in RxJS 5
l'hai letto http://xgrommx.github.io/rx-book/content/observable/observable_methods/if.html o http://xgrommx.github.io/rx-book/content/observable/observable_methods/case.html? – xgrommx
@xgrommx, in realtà sto usando il tuo libro Rx per imparare RxJS. Ho perso completamente il parametro 'elseSource' dall'operatore' if'. Grazie mille 'Rx.Observable.if()' ha funzionato come un incantesimo. –