哪些 RxJS 运算符需要退订?

我知道有些运算符会自动完成,例如 forkJoin,但据我所知,还有其他运算符永远不会完成,必须取消订阅以防止任何订阅泄漏,例如 combineLatest。

有什么好的方法可以判断哪些必须取消订阅,哪些是安全的?或者至少是他们的完整列表?我正在努力从文档中获取此信息。

我对 RxJS 还是很陌生,所以如果我似乎误解了什么,请告诉我。


请注意:我知道如何使用,| async但我正在处理一个现有项目,目前无法使用它。我也知道并正在使用takeUntil该方法来代替该unsubscribe方法,因此这与该方法无关。我只想知道在使用其中一个 RxJS 运算符之后何时需要使用takeUntil/ 。unsubscribe


蝴蝶不菲
浏览 83回答 1
1回答

慕的地8271018

forkJoin实际上不会自动完成。这取决于它正在修改以完成的可观察对象。如果这些 observables 没有完成,则forkJoin(). 实际上,combineLatest具有相似的品质。通常,所有 RxJS 提供的运算符都会创建在原始可观察对象关闭时关闭的可观察对象 - 或者至少其中之一。实际上,这意味着开发人员使用 RxJS 来理解他们传递给操作员的可观察对象的行为。流有可能永远被卡住吗?在那种情况下,我们将要修改它来处理这个问题——也许它会在 5 秒无活动后关闭。重点是操作员要么尊重输入可观察对象的完成,要么修改它(可能通过提前完成),因为这是他们设计的目的。后一类最常见的例子包括“takes”:take, takeWhile, takeUntil。花足够的时间在图书馆 - 阅读每个操作员的文档,在代码中玩弄它们,或者在这里询问是否有特定的东西没有意义,你会变得非常熟悉哪些是哪些。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript