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を作れる。