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。