RxJS演算子を使用してif/else制御構造をモデル化することは可能ですか? Observable.filter()を使ってIFブランチをシミュレートすることができましたが、ObservableオペレータでELSEブランチをシミュレートするかどうかはわかりません。Observables演算子を使用したRxJSモデリング
答えて
は、あなたがこれをエミュレートするために使用することができますカップルのオペレータがあります。ほとんどの場合、あなたが
//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);
});
foが求めているものから順に
//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(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!"))
この包括的な演算子のリストを提供してくれてありがとう。私はuse caseに応じて、これらの演算子の1つを使って 'if/else'をシミュレートすることができます。私の特定の例では、 'Rx.Observable.if()'がそのトリックを行いました。 –
rxjs docsにもっと多くの演算子/詳細を追加します:https://github.com/Reactive-Extensions/RxJS/blob/master/doc/api/core/observable.md –
すべての詳細をありがとうございます。 '' 'Rx.Observable.if()' 'と' '' elseSource'''がトリックをしました。 –
- 1. 配列のRxJs演算子を使用
- 2. 角2 + rxjs:.share()演算子を使用した非同期パイプ
- 3. RxJSのキュー演算子
- 4. Observable.createのRxJS lettable演算子
- 5. Observablesのキャッシュ演算子を使用する
- 6. RxJSを使用して関数/演算子を作成する
- 7. 演算子を使用してRxJS Observableクラスを拡張する
- 8. Rxjsは配列プロパティのmin演算子を使用します
- 9. TypeScriptを使用してRxJS演算子を新しい演算子に結合する
- 10. TypeScriptアプリケーション内でrxjs演算子を使用する方法
- 11. AvaテストでのRxJS遅延演算子の使用
- 12. 角2のRxJS "スロットル"演算子の使用方法
- 13. rxjsとangular 2と "take"演算子の使用
- 14. ビット演算子を使用したパターン
- 15. IN演算子を使用したデータストアクエリ
- 16. RxJSパイプの仕組み(lettable演算子)
- 17. Angular CLI内のRxJS lettable演算子
- 18. 角2 - RXJS Observablesを使用する
- 19. 角度2のRxJSサブスクリプション演算子を使用しています。
- 20. CONTAINS演算子 '@'を使用
- 21. PythonでAND演算子とNOT演算子を使用する
- 22. RxJs V4 forkJoinとマップを組み合わせた演算子
- 23. Pythonでブール演算子を使用するためのビット演算子のオーバーロード
- 24. instanceof演算子の使用
- 25. 演算子のオーバーロードを使用した行列の加算
- 26. 算術演算子を使用したRubyの日付フォーマット
- 27. 算術演算子を使用したRubyメソッド名:+ - * \と=、+ =
- 28. どのような順序でRxJS演算子を使用できるか
- 29. OR演算子を使用したSQL Where句の使用
- 30. 演算子( - - )()演算子C#
あなたはそれhttp://xgrommx.github.io/rx-book/content/observable/observable_methods/if.htmlまたはそれを読みましたhttp://xgrommx.github.io/rx-book/content/observable/observable_methods/case.html? – xgrommx
@xgrommx、実際に私はあなたのRxの本を使ってRxJSを学んでいます。私は 'if'演算子から' elseSource'パラメータを完全に見逃しました。 Rx.Observable.if()が魅力的に働いてくれてありがとう。 –