Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/413.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typescript/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 哪些RxJS运营商需要取消订阅?_Javascript_Typescript_Rxjs - Fatal编程技术网

Javascript 哪些RxJS运营商需要取消订阅?

Javascript 哪些RxJS运营商需要取消订阅?,javascript,typescript,rxjs,Javascript,Typescript,Rxjs,我知道有些运营商会自动完成,比如forkJoin,但就我所知,还有一些运营商永远不会完成,必须取消订阅以防止任何订阅泄漏,比如CombineRelatest 有没有一个好方法来区分哪些必须取消订阅,哪些是安全的?或者至少是一份完整的名单?我正在努力从文档中获取这些信息 我对RxJS还是相当陌生的,所以如果我似乎误解了什么,请告诉我 请注意:我知道如何使用| async,但我正在处理一个现有的项目,目前还不能使用它。我也知道并正在使用takeUntil代替unsubscribe方法,因此这不是指

我知道有些运营商会自动完成,比如forkJoin,但就我所知,还有一些运营商永远不会完成,必须取消订阅以防止任何订阅泄漏,比如CombineRelatest

有没有一个好方法来区分哪些必须取消订阅,哪些是安全的?或者至少是一份完整的名单?我正在努力从文档中获取这些信息

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



请注意:我知道如何使用
| async
,但我正在处理一个现有的项目,目前还不能使用它。我也知道并正在使用
takeUntil
代替
unsubscribe
方法,因此这不是指该方法。我只想知道在使用了一个RxJS操作符之后,何时需要使用
takeUntil
/
取消订阅。

forkJoin
实际上不会自动完成。这取决于要修改以完成的可观测值。如果这些观察不完整,则
forkJoin()
返回的观察也不完整。实际上,
combinelateest
具有类似的特性

通常,所有RXJ提供的操作符都会创建当原始可观察对象关闭时关闭的可观察对象,或者至少其中一个

实际上,这意味着使用RxJS的开发人员需要了解传递给操作员的可观察对象的行为。这条河可能永远被堵住吗?在这种情况下,我们需要修改它以处理此问题-可能在5秒无活动后关闭

关键是,操作员要么尊重可观察输入的完成,要么修改它(可能通过提前完成),因为这是他们设计的目的。后一种排序的最常见示例包括“take”:
take
takeWhile
takeUntil

花足够的时间在这个库上——阅读每个操作员的文档,在代码中使用它们,或者在这里询问一些特定的东西是否有意义,这样你就会非常熟悉哪些是哪些