本文主要是介绍第三章 - 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)
这篇关于第三章 - Subject 和 Observable 理解的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!