未完成的可观察对象

Non-completing observables

在我的应用程序的某个地方,我有一个函数必须 return 一个 Observable。大多数时候,这工作正常,但在某些情况下,实际上不可能提供有意义的结果。如果是这种情况,调用者也不会对结果做任何事情。

因为结果如何并不重要,所以我 return new Observable() 在这里。如果我 return 什么都没有(比如 return;),我会得到一个错误,所以我必须 return 一个 Observable。

我担心的事情是让像这样的 Observables 永远不会完成。在 Observable 的生命周期结束时,subscriber.complete() 用于指示 Observable 不再做任何事情。如果我不这样做,会不会导致任何严重的问题,比如内存泄漏?

有一个可立即完成的 RxJS 常量可观察对象。它被称为EMPTY

所以 return EMPTY。它在语义上也会更清晰。

有很多类型的 Observable :

  • 有限(如 Http 请求)
  • 无限

infinite 的类型允许内存泄漏或一些“奇怪”的问题,因为依赖于像重播一样使用的 observable。

致return observable who complete() now without emit next() value :

return EMPTY;

如果需要通过next():

return of({});

我的建议是在管道中使用 takeUntil 取消订阅以避免内存泄漏。

https://blog.bitsrc.io/6-ways-to-unsubscribe-from-observables-in-angular-ab912819a78f