71. 实现 Observable Subject
分享给更多人
中等难度 -通过 / -执行
本问题是 57. 实现Observable的续集。
Observables 是unicast的,意味着每一个subscription都是相互独立的。为了创造multicast,你需要使用Subject。
嗯,用代码来解释可能更简单
// 以下是默认行为
const observable = from([1,2,3])
observable.subscribe(console.log)
observable.subscribe(console.log)
// 1
// 2
// 3
// 1
// 2
// 3
你可以从log上看出来两个订阅是相互独立的,所以log也是分开的。
如果用了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
可以看到log不一样了!因为Subject首先按照observer工作,获取值,然后像一个Observable工作,把value 传递给多个不同的observer。
很酷对吧?好了,请实现一个简单的Subject Class
。
Observable
实现成的,你可以直接使用- 你可以用
new Observer({next,error,complete})
或者new Observer(function)
来创建一个新的Observer。