Angular RxJS Subject主体
Posted Kabukiyo Lin
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Angular RxJS Subject主体相关的知识,希望对你有一定的参考价值。
RxJS Subject
Subject与Observable的区别
- Subject是多播的,可以把值推送给多个观察者;Observable是单播的。
- Subject既可以做可观察对象,又可以做观察者
Subject作可观察对象
// 创建subject
var subject = new Rx.Subject();
//为subject注册两个观察者observerA、observerB
subject.subscribe({
next: (v) => console.log('observerA: ' + v)
});
subject.subscribe({
next: (v) => console.log('observerB: ' + v)
});
//subject作为可观察对象,为两个观察者播数据;
//第一次播报,给A和B发送1;
//第二次播报,给A和B发送2
subject.next(1);
subject.next(2);
// observerA: 1;
// observerB: 1;
// observerA: 2;
// observerB: 2;
也可以这么写
// 创建subject
var subject = new Rx.Subject();
//定义两个观察者A和B
const observerA = {
next: (v) => console.log('observerA: ' + v);
}
const observerB = {
next: (v) => console.log('observerB: ' + v);
}
//为subject注册两个观察者observerA、observerB
subject.subscribe(observerA);
subject.subscribe(observerB);
//subject作为可观察对象,为两个观察者播数据;
//第一次播报,给A和B发送1;
//第二次播报,给A和B发送2
subject.next(1);
subject.next(2);
Subject作观察者
把subject当作观察者,那它也可以作观察者订阅observable。
observable.subscribe(subject);
var observable = Rx.Observable.from([1, 2, 3]);
var subject = new Rx.Subject();
//定义两个观察者A和B
const observerA = {
next: (v) => console.log('observerA: ' + v);
}
const observerB = {
next: (v) => console.log('observerB: ' + v);
}
//为subject注册两个观察者observerA、observerB
subject.subscribe(observerA);
subject.subscribe(observerB);
observable.subscribe(subject); // 你可以提供一个 Subject 进行订阅
以上是关于Angular RxJS Subject主体的主要内容,如果未能解决你的问题,请参考以下文章
Angular RXJS Observables或Subjects在内部传递数字
Angular中利用rxjs库的Subject多播解决在第一次订阅时进行初始化操作(如第一次订阅时从服务器获取数据)