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を実装してください。

  1. Observableはすでに実装済みで、そのまま使える。
  2. new Observer({next,error,complete}) または new Observer(function)で新規Observerを作れる。

常にもっといい方法を求めよう。

(28)