为什么我们要完成可观察的?

时间:2019-06-25 10:32:08

标签: javascript rxjs

我想知道不使用以下代码编写完整语句的弊端。在这种情况下会发生什么?

Observable.create(function(observer) {
  observer.next('Hello');
  observer.next('World');
  // observer.complete(); 
});

1 个答案:

答案 0 :(得分:2)

如果您不致电.complete(),订阅者将永远不会意识到您的Observable将不再发出事件。通过调用.complete(),所有订阅者都将取消订阅并释放分配的内存,从而防止内存泄漏。您可以假设订阅者将取消订阅(基于事件内容,事件计数或其他原因),但是强烈建议您发出“已完成”事件,因为这将防止您的Observable被滥用。 / p>

也如注释中所写,如果Observable未完成(例如,concatMap将等待Observable的完成,然后再切换到下一个),则某些运算符将根本无法工作