4

次の単一サブスクライバーを使用するにはどうすればよいですかReplaySubject

  1. onNext()誰かがサブスクライブするまで、受信したすべてのイベントをバッファリングします。
  2. 誰かがサブスクライブすると、バッファリングされたすべてのイベントがサブスクライバに転送され、ReplaySubject(パフォーマンス上の理由から) バッファから消去され、後続のイベントはサブスクライバにのみ転送されます (バッファリングは行われません)。
  3. 複数のオブザーバーがサブスクライブしている場合、例外がスローされます。
  4. サブジェクトに与えられたすべてのバッファリングされたイベントは、各イベントが生成された時間に基づいて順序付けられ、サブスクリプション中にその順序でサブスクライバーに転送されますか?

また、これは意味がありますか?ファイルシステムなどからイベントを転送する場合など、このテーマには良いユースケースがあると思います...

4

1 に答える 1

4

UnicastSubject公式の API の一部ではありませんが、この目的のために があります。つまり、警告なしに変更または削除される可能性があります。

編集

ご要望の機能をご紹介します。

1) すべてのイベントをバッファリングします。

子がない場合、または追いついていない場合: 要素を queue に保存します

2) サブスクライブすると、バッファが消費され、サブスクライバにリプレイされます

ドレイン ループはキューからポーリングしてそれを消費しサブスクライバーが追いついた場合は直接送信します

3) 複数のオブザーバーがサブスクライブしている場合、例外がスローされます

後続のサブスクライバーは例外を受け取ります

4) サブジェクトに与えられたすべてのバッファリングされたイベントは、各イベントが生成された時間に基づいて順序付けられます

FIFO の順序を保証するシングル プロデューサー、シングル コンシューマー キューを使用します。

于 2016-05-11T16:43:55.707 に答える