我知道有些运算符会自动完成,例如 forkJoin,但据我所知,还有其他运算符永远不会完成,必须取消订阅以防止任何订阅泄漏,例如 combineLatest。有什么好的方法可以判断哪些必须取消订阅,哪些是安全的?或者至少是他们的完整列表?我正在努力从文档中获取此信息。我对 RxJS 还是很陌生,所以如果我似乎误解了什么,请告诉我。请注意:我知道如何使用,| async但我正在处理一个现有项目,目前无法使用它。我也知道并正在使用takeUntil该方法来代替该unsubscribe方法,因此这与该方法无关。我只想知道在使用其中一个 RxJS 运算符之后何时需要使用takeUntil/ 。unsubscribe
1 回答
慕的地8271018
TA贡献1796条经验 获得超4个赞
forkJoin
实际上不会自动完成。这取决于它正在修改以完成的可观察对象。如果这些 observables 没有完成,则forkJoin()
. 实际上,combineLatest
具有相似的品质。
通常,所有 RxJS 提供的运算符都会创建在原始可观察对象关闭时关闭的可观察对象 - 或者至少其中之一。
实际上,这意味着开发人员使用 RxJS 来理解他们传递给操作员的可观察对象的行为。流有可能永远被卡住吗?在那种情况下,我们将要修改它来处理这个问题——也许它会在 5 秒无活动后关闭。
重点是操作员要么尊重输入可观察对象的完成,要么修改它(可能通过提前完成),因为这是他们设计的目的。后一类最常见的例子包括“takes”:take
, takeWhile
, takeUntil
。
花足够的时间在图书馆 - 阅读每个操作员的文档,在代码中玩弄它们,或者在这里询问是否有特定的东西没有意义,你会变得非常熟悉哪些是哪些。
添加回答
举报
0/150
提交
取消