javascript - 为什么我们要完成 observable?
问题描述
我想知道在下面编写的代码中不编写完整语句的缺点。在这种情况下会发生什么?
Observable.create(function(observer) {
observer.next('Hello');
observer.next('World');
// observer.complete();
});
解决方案
如果您不调用.complete()
,订阅者将永远不会知道您Observable
将不再发出事件。通过调用.complete()
,所有订阅者将取消订阅并释放分配的内存,从而防止内存泄漏。您可以假设订阅者将自行取消订阅(基于事件内容、事件计数或其他任何内容),但强烈建议发出“已完成”事件,因为它可以防止您Observable
被滥用。
同样如评论中所写,如果Observable
未完成,某些运算符根本无法工作(例如concatMap
,将等待 Observables 完成,然后再切换到下一个)
推荐阅读
- oop - 传递一个对象或传递一个生产该对象的工厂
- python - 为多个元素赋值?
- spring - 使用 @transactional 注释的 Spring Boot Transaction 支持不适用于 mongoDB,有人有解决方案吗?
- c# - 您的 SQL 语法有错误,请查看指定版本的 MYSQL 的手册
- android - 为什么 JetpackCompose Material Theme 的形状与边缘圆度有关?
- android - Android x86 端口 - 更改默认 wifi 的 SSID/BSSID
- c++ - libmodbus 库的 modbus_read_registers() 无法在 Raspbian GNU/Linux 10 (buster) 上读取 RS485 数据,但能够在 Yocto Dizzy Release 上读取
- iso - Etcher 刻录 iso 的更好选择
- onedrive - 有没有办法自动复制 OneDrive 共享链接?
- python - For 循环不保存在 Pandas Dataframe 中所做的更改