2016-12-15 4 views
1

もう片側があきらめてStreamChannelのシンクを閉じたかどうか、実際にはまだメッセージを読むことはしません。DartでStreamが実際にメッセージを流さずに「完了」したときに、将来完了するための方法はありますか?

(あなたは一度だけ、ストリームごとに聞くことが許されているので、私は他の誰かにストリームを渡すことするつもりですので、私は(聞くことができない)ことに。)

[の転記友人、質問のための彼らのクレジット]

+0

元のストリームを聞いて、すべての値を別のストリームにパイプした場合はどうなりますか?あなたは他の人にその二流を渡すことができますか? – Pacane

答えて

6

要するに、

「諦め」という概念はありません。イベントを非放送ストリームに入れると、誰かがストリームを聞くまでそこに留まります(誰かが聴くまではデータを置いてはいけないので、ただメモリを浪費しています)。 これにはdoneイベントが含まれており、前のすべてのイベントを最初に読み取らずにdoneイベントには到達しません。それがストリームのコア抽象です - 順序でアクセスされるイベントのソースです。実際に実行されるまでは実行されません。

は、私はあなたが探していると思うこと(つまり、アウト・オブ・バンド)を通じてストリームをを介さずについてストリーム情報を通信できる「サイドチャネル」です。 それは確かに構築することができます - あなたが望むものに応じて約1つの異なる方法で、しかしそれはちょうどStreamがサポートしているものではなく、StreamChannelも正しく読み取れません。 StreamChannel私自身)。

関連する問題