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 Observablesを連結する
- 2. CONTAINS演算子 '@'を使用
- 3. PythonでAND演算子とNOT演算子を使用する
- 4. 算術演算子を使用したRubyの日付フォーマット
- 5. 演算子if演算子
- 6. OR演算子を使用したSQL Where句の使用
- 7. グループで演算子以上の演算子を使用できますか?
- 8. All演算子を使用する
- 9. レイザービューで "nameof"演算子を使用
- 10. ランダム演算子を使用する
- 11. C++:演算子オーバーロード、演算子+
- 12. C++演算子+演算子+ =オーバーロード
- 13. Xval演算子と比較演算子?
- 14. パーセント記号演算子(%)を使用した場合のトラブル(PHP)
- 15. WQLの構文:LIKE演算子を使用したDiskDriveToDiskPartition
- 16. AND演算子を使用したBash条件
- 17. ng-if ==演算子を使用した日付比較
- 18. 0でのPython論理演算子を使用した問題
- 19. ポインタベースクラスを使用した=演算子付きの多態性
- 20. ifnullを使用したMysql IN演算子
- 21. LEFT JOIN AND条件式APIを使用したAND演算子
- 22. OR演算子を使用したラムダ式
- 23. テーブルと論理演算子を使用したWatirスクリプティングのヘルプ
- 24. 論理演算子を使用したSQL検索
- 25. AND演算子を使用したElasticsearch URIベースのクエリ
- 26. angularJS - 論理演算子を使用した複数のインラインフィルタ
- 27. Pythonモジュロ演算子を使用したリストの並べ替え
- 28. C++ミューテックスを使用したストリーム演算子のロック
- 29. ResourceManagerとnameof演算子を使用したリテラルリソースキーの検索
- 30. MongoDB集約フレームワークを使用したカスタムパイプライン演算子
あなたはそれ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()が魅力的に働いてくれてありがとう。 –