原创文章,转载请注明出处

理解

observable的每个订阅者之间,是独立的,完整的享受observable流动下来的数据的。

subject的订阅者之间,是共享一个留下来的数据的

举例

这里的clock$ 被订阅者被 observerA,observerB ,observerC 三个订阅者在不同的时间独自订阅。

对于三个订阅者,clock$ 都是从头重新完成的跑一遍。

    let a=''
const clock$ = Rx.Observable.interval(1000).take(3); const observerA = {
next(v) {
a+='--A执行了,'
console.log('A next: ' + v)
console.log(a)
}
}
const observerB = {
next(v) {
a+='--B执行了,'
console.log('B next: ' + v)
console.log(a)
}
} const observerC = {
next(v) {
a+='--C执行了,'
console.log('C next: ' + v)
console.log(a)
}
} clock$.subscribe(observerA) // a Observable execution setTimeout(() => {
clock$.subscribe(observerB) // another new Observable execution
}, 7000) setTimeout(() => {
clock$.subscribe(observerC) // another new Observable execution
}, 14000) /*
A next: 0
--A执行了,
A next: 1
--A执行了,--A执行了,
A next: 2
--A执行了,--A执行了,--A执行了,
B next: 0
--A执行了,--A执行了,--A执行了,--B执行了,
B next: 1
--A执行了,--A执行了,--A执行了,--B执行了,--B执行了,
B next: 2
--A执行了,--A执行了,--A执行了,--B执行了,--B执行了,--B执行了,
C next: 0
--A执行了,--A执行了,--A执行了,--B执行了,--B执行了,--B执行了,--C执行了,
C next: 1
--A执行了,--A执行了,--A执行了,--B执行了,--B执行了,--B执行了,--C执行了,--C执行了,
C next: 2
--A执行了,--A执行了,--A执行了,--B执行了,--B执行了,--B执行了,--C执行了,--C执行了,--C执行了,
*/

对于subject则不同

observerA,observerB ,observerC 三个订阅者在不同的时间订阅同一个subject。

他们三个在时间上是共享一个subject。

subject产生数据时,你这个订阅者如果没来得及订阅,那对不起,过了这个村就没这个店,你错过了。

const { Observable, Subject } = Rx

const clock$ = Observable.interval(1000).take(3);

const observerA = {
next(v) {
console.log('A next: ' + v)
}
}
const observerB = {
next(v) {
console.log('B next: ' + v)
}
}
const subject = new Subject()
subject.subscribe(observerA) clock$.subscribe(subject) setTimeout(() => {
subject.subscribe(observerB)
}, 2000) /*
* A next: 0
* A next: 1
* A next: 2
* B next: 2
*/

最新文章

  1. 谨慎使用Marker Interface
  2. 小尝试一下 cocos2d
  3. js打印html中的内容
  4. leetcode 100 Same Tree ----- java
  5. UML 小结(2)- 理论理解
  6. SQL Server 查看identity值的几种方法。
  7. tolua 有些功能可以用(经过测试)
  8. 记忆化搜索 dp学习~2
  9. JVM学习八:常用JVM配置参数
  10. css块居中
  11. 安装mysql时出现应用程序无法正常启动(0xc000007b)
  12. struts建立工程helloworld
  13. 牛客多校第二场 G transform
  14. centos7 安装cmake
  15. python(58):python下划线
  16. CentOS 7 firewalld
  17. bzoj 2726 [SDOI2012]任务安排(斜率DP+CDQ分治)
  18. 预防U盘被病毒侵害的方法
  19. 解决python中write()函数向文件中写中文时出现乱码的问题
  20. iOS开发-项目的完整重命名方法,图文教程。

热门文章

  1. asp.net core-13.Cookie-based认证实现
  2. asp.net core-5.控制台读取json文件
  3. 红帽linux系统开机自启动脚本。
  4. css 清除浮动 & BFC
  5. [Vue]axios 发出请求的config
  6. (八)mybatis之多对多
  7. 在textarea和input光标处插入内容,支持ie
  8. 微信小程序 上传图片并等比列压缩到指定大小
  9. CVE-2019-0214: Apache Archiva arbitrary file write and delete on the server
  10. 1.NIO概述