Rx勉強会
既存のイベントや非同期処理とRxを連携させるため、Observableに変換する機能が用意されている
これらの変換処理は言語やプラットフォームごと固有の物に合わせて作られているので、何からObservableに変換できるのかはドキュメントを参照してください。
ここでは有名どころを上げていきます
DOMElementとイベント名を指定すると、指定したDOMの指定したイベントごとに発火するObservableを生成します。DOMElementはjQueryやAngular等で包まれていても良い
fromEventでは対処できないようなタイプのイベント系処理をObservableに変換するときに使います。主にDOMイベント用やイベントlikeなコールバックに使用。
C#のevent構文をObservableに変換するときに使います。.NET 3.5以降のAction/Funcを使ったevent構文を変換するときに使います
C#のevent構文をObservableに変換するときに使います。.NET2以前の書き方の古いevent構文や、腐ったコードに蓋をするときに使います。
AndroidのActivityのclickイベントをObservableに変換するときに使います。見つけた記事には他にもtextという関数があるそうですが、ドキュメントが見当たらず。。。
同様の機能はReactiveCocoa(Obj-C向け)にもあります。
JSのPromiseをObservableに変換します
.NETのTaskをObservableに変換します。ToTaskを使ってTaskに戻すことも出来ます
JavaのFutureをObservableに変換します。BlockingObservableからtoFutureを使ってFutureに変換することもできます。
比較的汎用なObservable生成メソッド。ただし、このObservableはcoldなのでeventで使うときには若干注意
最後の引数が結果のcallbackの関数を渡すと、結果をObservableで返すような関数にwrapしてくれます。node.js向けにfromNodeJSCallbackもあります
なお、イベント的な使い方をしているコールバックはfromEventPatternを使いましょう
イテレータや配列をObservableに変換します。変換されたObservableは配列を一つ返して終了するcoldなOservableになります。
同様の値や配列をObservableに変えるメソッドはfrom/just(RxJava)等であります
UnityのコルーチンをObservableに変換します
Unityの毎フレームのUpdate時に呼び出されるObservableを作成します。
Subjectは上記のパターン以外のObservableの生成や、新規クラスでイベント発生の内部用実装で使用します
SubjectはObservableの具象クラスであり、更にObserverの具象クラスでもあるので、Subject.OnNext
をコールすると、SubjectがObservableとして発火する仕組みになっています
Subjectにはいくつかの派生があり、ReplaySubjectやAsyncSubjectが挙げられます。用途に合わせて使用するクラスを変えましょう
参考資料