LoginSignup
5
2

More than 3 years have passed since last update.

StreamControllerのsink.add,add,addStreamの違い

Posted at

StreamControllerとは

・制御するストリームを持つコントローラ。
・このコントローラは、そのストリーム上でデータ、エラー、および終了イベントを送信することを可能にします。このクラスは、他の人が待機できる単純なストリームを作成したり、そのストリームにイベントをプッシュしたりするために使用できます。
・ストリームが一時停止されているかどうか、そしてそれがサブスクライバを持っているかどうか、そしてこれらのどちらかが変わったときにコールバックを受けるかどうかをチェックすることが可能です。

要するに、
非同期処理を行うものである。

addがたくさんある。

StreamControllerのapiにはaddがたくさんある。

  • StreamController.sink.add
  • StreamController.add
  • StreamController.addStream

それぞれの違いを説明する

StreamController.add

addメソッドの引数に値を入れると、StreamControllerに持たすことができる。

StreamController.addStream

Stream型の値を入れることができる。

StreamController.sink.add

StreamController<T>.sink => StreamSink<T>
StreamController.addと同じことをやっているのだが、StreamSinkは入力のみを受け付けるメソッドしかもたない。
よって、初期化されたStreamControllerクラスは、データが入っていたとしても、StreamSink型になるとstreamを受け取ることができないので、誤った値の購読を防ぐことができる。

5
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
2