RxJS核心操作符与流处理详解
1. RxJS的延迟求值与订阅机制
RxJS采用延迟求值策略,即表达式的整个求值过程会等待,直到需要该表达式的结果时才开始。具体来说,会等到订阅者订阅可观察表达式,然后才开始初始化所需的数据结构。这种延迟求值允许RxJS进行内部数据结构的优化和重用。
RxJS通过两种方式避免过早分配数据:
- 延迟订阅机制 :可观察对象在被感兴趣的事件激活之前会处于休眠状态。例如,以下代码创建了一个每秒生成一个事件的可观察对象:
const source$ = Rx.Observable.create(observer => {
let i = 0;
setInterval(() => {
observer.next(i++);
}, 500);
});
要激活 source$ ,观察者必须通过 subscribe() 方法进行订阅。调用 subscribe 会使可观察对象脱离休眠状态,并开始生成值。
- 即时推送数据 :可观察对象在事件发出后立即推送数据,而不是将其静态地保存在内存中。默认情况下,数据一旦被接收就会向下游发送。
延迟订阅的第二个优点是,可观察对象默认不会保留数据。在上述示例中,每个由定时器生成的事件都会被处理然后丢弃,这体现了可观察对象的流式特性,避免了无限制的内存增长和内存泄漏问题。
超级会员免费看
订阅专栏 解锁全文
498

被折叠的 条评论
为什么被折叠?



