一. rxjs 发布订阅模式使用
1. 发布订阅模式简单来说就是发布了一个主题后,其所有的订阅者都会收到这个主题下的消息。可以理解成QQ群,创建QQ群就是发布主题,加入QQ群就是订阅。订阅之后你就会收到这个QQ群的消息
2. 发布主题
import { Observable, Subject } from 'rxjs';
@Injectable({
providedIn: 'root'
})
export class MessageService {
subject = new Subject(); // 新建一个实例就相当于一个主题
}
3. 订阅主题,首先你得创建一个订阅者对象作为订阅参数。这里时可以多个对象重复加入的,相当于多人加群
const object = {
next: value => console.log(value), // 当有新的消息产生会触发
error: value => console.log(value), // 报错时粗发
complete: () => console.log('complate') // 当主题结束时触发
}
this.subject.subscribe(object);
4. 接下来就可以发送消息了
this.subject.next(‘发送的内容,任意值’)
二. 介绍几个常用的主题
import { Observable, Subject, BehaviorSubject, ReplaySubject, AsyncSubject } from 'rxjs';
@Injectable({
providedIn: 'root'
})
export class MessageService {
subject = new Subject(); // 普通的
BehaviorSubject = new BehaviorSubject(0); // 订阅会立马推送一次默认值,参数就是默认值
ReplaySubject = new ReplaySubject(2); // 会推送最后的N个值,N是这里传的2
AsyncSubject = new AsyncSubject(); // 会在complete后发送最后一个值,之后新订阅的也会推送。但是complete之前不会推送
}