71. Observable Subjectを実装する
シェアしよう
少し工夫が必要 - accepted / - tried
この問題は 57. Observableを作るの続きです。
Observableはunicast、つまり各subscriptionお互いに干渉しない。multicastを実現するため、Subjectを使うと良い。
ええと、コードで説明した方がわかりやすいかも
// 以下はデフォルトの挙動const observable = from([1,2,3])observable.subscribe(console.log)observable.subscribe(console.log)// 1// 2// 3// 1// 2// 3
ログから見るとわかる。二つのサブスクリプションは独立なので、ログも分かれている。
Subjectを使えば、DOMのイベントシステムに近づいてくる。
const subject = new Subject()subject.subscribe(console.log)subject.subscribe(console.log) const observable = from([1, 2, 3])observable.subscribe(subject)// 1// 1// 2// 2// 3// 3
ログが変わった!Subjectはまずobserverとして働き、valueを取得してからObservableとして働き、valueを複数のobserverに渡している。
面白くない?では、基本なSubject Class
を実装してください。
Observable
はすでに実装済みで、そのまま使える。new Observer({next,error,complete})
またはnew Observer(function)
で新規Observerを作れる。