我想知道不使用以下代码编写完整语句的弊端。在这种情况下会发生什么?
Observable.create(function(observer) {
observer.next('Hello');
observer.next('World');
// observer.complete();
});
答案 0 :(得分:2)
如果您不致电.complete()
,订阅者将永远不会意识到您的Observable
将不再发出事件。通过调用.complete()
,所有订阅者都将取消订阅并释放分配的内存,从而防止内存泄漏。您可以假设订阅者将取消订阅(基于事件内容,事件计数或其他原因),但是强烈建议您发出“已完成”事件,因为这将防止您的Observable
被滥用。 / p>
也如注释中所写,如果Observable
未完成(例如,concatMap
将等待Observable的完成,然后再切换到下一个),则某些运算符将根本无法工作