RxJS ヒント [filter, takeWhile]

Jan 06 2023
このヒントは、RxJS ライブラリーの filter オペレーターと takeWhile オペレーターの違いをカバーしています。公式ドキュメントによると: filter 指定された述語を満たすアイテムのみを発行することにより、ソース Observable によって発行されたアイテムをフィルター処理します。

このヒントは、 RxJS ライブラリーのfilterオペレーターとtakeWhileオペレーターの違いをカバーしています。

公式ドキュメントによると:

フィルター

指定された述語を満たすアイテムのみを発行することにより、ソース Observable によって発行されたアイテムをフィルタリングします。

takeWhile

各値が指定された述語を満たしている限り、ソース Observable によって発行された値を発行し、この述語が満たされない場合はすぐに完了します。

したがって、両方の演算子は、ソース ストリームによって発行された各値に対して呼び出される最初の引数として述語関数を取ります。

ただし、フィルタ オペレータによって返された Observable は、ソース ストリームから登録解除されることはありません。述語関数が満たされない場合、ソース Observable から暗黙的にサブスクライブ解除するためにフィルター演算子を使用できないことに注意してください。

一方、takeWhile オペレーターによって返されたストリームは、ソース Observable からサブスクライブ解除され、述語関数が偽の値を返すと、完全な通知を発行します。その結果、takeWhile 演算子を使用して、特定の条件に基づいてソース ストリームへのサブスクリプションを暗黙的にキャンセルできます。

ソースの Observable は完全な通知を発行しないことに注意する価値がありますが、ファイナライズ オペレーターに渡されたコールバック関数は、完了またはサブスクリプションのキャンセルにかかわらず、ストリームの終了時に呼び出されます。さらに、ソース ストリームによって発行された最後の値が出力 Observable (デフォルトでは false である takeWhile 演算子の 2 番目の引数) に渡されるかどうかを制御できます。

実際の例:

ヒントが気に入ったら拍手をお願いします