序文
RXJSのコアは、観測可能なデータシーケンスを使用した非同期プログラミングとイベントプログラミングの組み合わせである観測可能なオブジェクトです。
これに非常に似た非同期プログラミングモデルは約束です。約束は、状態の変化に基づく非同期モデルです。待機状態が成功した状態または失敗した状態に入ると、再び変更することはできません。状態が変化すると、サブスクライバーは1つの値のみを取得できます。一方、観察可能は、シーケンスに基づいた非同期プログラミングモデルです。シーケンスが変化すると、サブスクライバーは新しい値を継続的に取得できます。さらに、Promiseはコールバックメカニズムのみを提供し、結果の複雑な処理をサポートするための操作を増やしていません。 Observableは、複雑なアプリケーションロジックを満たすために操作結果を処理するためのさまざまな演算子を提供します。
実際のプログラミングでは、主に3つのオブジェクトを扱います。観察可能、オブザーバー、サブスクリプション:
要素のクリックイベントを例として、観察可能な使用方法を確認してください。
var clickstream = new rx.observable(observer => {var handle = evt => observer.next(evt); element.addeventlistener( 'click'、handle); return()=> removeeventlistener( 'click'、handle);}); evt.id);}、err => {console.error( 'onerror');}、()=> {console.log( 'oncomplete');}); setimeout(()=> {subscription.unsubscribe();}、1000);各イベントをこのように包む必要がある場合、それほど面倒ではないでしょうか?したがって、RXJSは、イベントの接続をObservable.fromEventにするために、便利な機能を提供します。
一般的なリンク演算子: concat、merge、combinelateなど。
投影操作:マップ、フラットマップ、フラットマップを導入する必要があります
フィルター:フィルター、個別のultChanges、
オペレーター分類:カテゴリ別のオペレーター
エラー処理:キャッチ、再試行、最後に
減圧:デバウンス、スロットル、サンプル、一時停止可能
削減:バッファー、バッファーウィットカウント、バッファーウィットタイム
Observableのオペレーターを習得するには、まずシーケンス図を理解することを学ぶ必要があります。
矢印は、時間とともに変化するシーケンスを表します。たとえば、要素でマウスを連続的にクリックすると、円は外側へのシーケンスの影響を表します。たとえば、要素をクリックするたびにイベントコールバックがトリガーされ、円の数字は外部から放出される情報です。たとえば、各イベントトリガーには、この操作の情報を表すイベントオブジェクトがあります。
Observableを柔軟に使用して複雑なロジックを処理するには、提供するオペレーターを使用することを学ぶ必要があります。オペレーターを、単一シーケンス操作と複合シーケンス操作の2つのカテゴリに分割しました。シングルシーケンス操作とは、1つのシーケンスで実行される操作操作を指します。複合配列操作とは、2つ以上のシーケンスを処理する演算子を指します。複合配列動作を理解することは比較的困難です。
まず、シングルシーケンス操作を見てみましょう。マップ操作を例にしてください。
マップ操作は、毎回シーケンスで送信された情報を外側に変換することです。上の図に示すように、MAPは毎回10の伝送値を掛けます。次に、サブスクライバーがサブスクライブすると、毎回取得されたサブスクリプション値は元の123ではなく、変換された10 2030。シーケンス図を介して、Observableの操作をより簡単に理解できます。
例としてマージしましょう
マージ操作の目的は、2つの独立したシーケンスを1つのシーケンスに合成することです。もともと、時間が進むにつれて、シーケンス1はAを100ms、200msでbで、300msでCを送信します。そのサブスクライバーは、400msで3つの値のABCを受け取ります。シーケンス2は150msでDを、E 250ms、Fで350msで送信し、その加入者は400ms以内に3つの値のDEFを受け取ります。マージ後の新しいシーケンスは、400ms以内にABCDEFを受信します(注文に注意してください)。
一般的なオペレーターの理解:
Observable.Range:一定数の価値シーケンスを送信します。
Observable.ToArray:シーケンスが完了すると、すべての放出値を配列に変換します。
observable.flatmap:元のシーケンスストリームの要素を新しいシーケンスストリームに変換し、この新しいシーケンスストリームを元のシーケンスの要素の位置にマージします。
observable.startwith:観測可能なシーケンスの最初の値を設定します
Observable.comBinelatest: PromisealLと同様に、すべてのシーケンスに結果が得られた後にのみ実行されます。
Observable.Scan:シーケンスで放出される値は集約できます。還元と同様に、減少はシーケンス全体の値を集約し、シーケンスが完了したときに最終値を送信します。
Sumple.Sample:連続シーケンスから特定のサンプルを取得します
Observable.Merge:複数のシーケンスを1つにマージし、またはとして使用できます。
Observable.timestamp:各伝送値の送信時間を取得できます
Observable.distinctuntilChanged(Compare、selector):セレクターは比較に使用されるキーを取り出し、それを比較して2つのキーを比較します
Observable.takewhile()は、パラメーターがfalseの場合にデータの送信を停止します
要約します
上記は、この記事のコンテンツ全体です。この記事の内容が、すべての人の勉強や仕事に役立つことを願っています。ご質問がある場合は、メッセージを残してコミュニケーションをとることができます。