未完成的可观察对象
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
在我的应用程序的某个地方,我有一个函数必须 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