第三章 - Subject 和 Observable 理解

1.Observable 已经有初步理解了,就是一个可观察的对象,简而言之就是可以被订阅的一个事件流,亦或是数据流

2.Subject 既是一个观察者,也是一个可观察的对象。

 

Subject

网上看到一段释义觉得很贴切,在此引用一下。

可以将 Subject 看作是微信公众号,Observable 是微信用户来理解,分三步拆解。

1.new 一个 Subject 的时候,Subject 内部清单是空的,这时候没有任何 Observable 订阅它。

2.Subject 提供一个可被订阅的方法,当 Observable 订阅这个方法的时候,Subject 内部清单会添加这个 Observable

3.Subject 既然也是一个 Observable,那么它自身也能被订阅,也就是 Subject 也有 next,error,complete 三种状态。

当我们对 Subject 本身进行订阅时,它会对自身内部的清单(微信用户列表)进行循环遍历,并将值发送给每一个 Observable

var subject = new Rx.Subject();

var observerA = {
    next: value => console.log('A>>> ' + value),

var observerB = {
    next: value => console.log('BA>>> ' + value),
}

subject.subscribe(observerA);
subject.subscribe(observerB);

subject.next(1);
// "A>>> 1"
// "B>>> 1"
subject.next(2);
// "A>>> 2"
// "B>>> 2"

 BehaviorSubject

var subject = new Rx.BehaviorSubject(0); // 0 为起始值
var observerA = {
    next: value => console.log('A next: ' + value),
    error: error => console.log('A error: ' + error),
    complete: () => console.log('A complete!')
}

var observerB = {
    next: value => console.log('B next: ' + value),
    error: error => console.log('B error: ' + error),
    complete: () => console.log('B complete!')
}

subject.subscribe(observerA);
// "A next: 0"
subject.next(1);
// "A next: 1"
subject.next(2);
// "A next: 2"
subject.next(3);
// "A next: 3"

setTimeout(() => {
    subject.subscribe(observerB); 
    // "B next: 3"
},3000)

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值