概念
处理事件流的工具库
- Observable (可观察对象): 表示一个概念,这个概念是一个可调用的未来值或事件的集合。
- Observer (观察者): 一个回调函数的集合,它知道如何去监听由 Observable 提供的值。
- Subscription (订阅): 表示 Observable 的执行,主要用于取消 Observable 的执行。
- Operators (操作符): 采用函数式编程风格的纯函数 (pure function),使用像 map、filter、concat、flatMap 等这样的操作符来处理集合。
- Subject (主体): 相当于 EventEmitter,并且是将值或事件多路推送给多个 Observer 的唯一方式。
- Schedulers (调度器): 用来控制并发并且是中央集权的调度员,允许我们在发生计算时进行协调,例如 setTimeout 或 requestAnimationFrame 或其他。
基本定义: observable, observer, subscription
Subscription = Observable.subscribe(observer)
- observable: 随着时间产生的数据集合,可以理解为流,其subscribe方法可以启动该流
- observer: 决定如何处理数据
- subscription: 存储已经启动过的流,其unsubscribe方法可以停止该流
举例:创建一个基本的流并执行
500ms时输出一个数组[1,2,3],1s时输出一个对象{a: 1000}, 3s时,输出’end’, 然后在第4s终止该流。
import {
Observable } from "rxjs";
// 创建一个流的模版
const stream$ = new Observable(subscriber => {
setTimeout(() => {
subscriber.next([1, 2, 3]);
}, 500);
setTimeout(() => {
subscriber.next({
a: 1000 });
}, 1000);
setTimeout(() => {
subscriber.next("end");
}, 3000);
setTimeout(() => {
subscriber.complete();</