源自观察者-发布者设计模式:
![](https://img.haomeiwen.com/i2085791/636c238cee46cfcb.png)
观察者注册于 Subject 上,每当 subject 状态发生变化时,通知观察者。
RxJs 里的 Observable 就是 Subject:
![](https://img.haomeiwen.com/i2085791/507caef443298029.png)
管道:连接 Observable 的同时,增添额外的逻辑:
![](https://img.haomeiwen.com/i2085791/c94d6c8574b85133.png)
冷热 Observable 的区别:
![](https://img.haomeiwen.com/i2085791/469aa9a1f0cbc127.png)
Cold Observable,仅当被订阅时,才通过内部生产者生产数据
Hot Observable,具有外部生产者,不管被订阅与否,都能够自主生产数据,比如基于 HTML Event listener 的 Observable,基于 HTTP GET 的 Observable 等等。
subscription
![](https://img.haomeiwen.com/i2085791/a7d52f301a604ea5.png)
Observable 内部维护了一个指针,指向 subscriber,用于在需要的时候,unsubscribe Observers.
RxJs 里的 Observable 是单播,而 Subject 是多播。
![](https://img.haomeiwen.com/i2085791/4807b4b60b49bb0f.png)
更多Jerry的原创文章,尽在:"汪子熙":
![](https://img.haomeiwen.com/i2085791/97c4752c0e619c44.png)
网友评论