rxjs中扫描(…)和订阅(…)之间的差异

rxjs中扫描(…)和订阅(…)之间的差异,rxjs,Rxjs,我在谷歌上搜索过这个问题,希望在我之前也有无数好奇的人问这个问题。出于某种原因,大多数点击是在扫描和减少(我清楚地理解)。所以我有可能完全误解了文件 根据文档,将获取一个发出的值,对其进行处理,然后,有选择地将其传递给队列中的下一个人。同时,尽管接受错误处理和完成的参数,但也做了同样的事情 我理解它们之间的“区别”,但从开发工具的角度来看,这似乎无关紧要。对于后者需要普通编码的情况,前者仅仅是一种方便的方法,这是否如此简单?或者它们之间有根本性的区别(比如:我可以通过扫描来做一些我无法实现订阅的

我在谷歌上搜索过这个问题,希望在我之前也有无数好奇的人问这个问题。出于某种原因,大多数点击是在扫描和减少(我清楚地理解)。所以我有可能完全误解了文件

根据文档,将获取一个发出的值,对其进行处理,然后,有选择地将其传递给队列中的下一个人。同时,尽管接受错误处理和完成的参数,但也做了同样的事情

我理解它们之间的“区别”,但从开发工具的角度来看,这似乎无关紧要。对于后者需要普通编码的情况,前者仅仅是一种方便的方法,这是否如此简单?或者它们之间有根本性的区别(比如:我可以通过扫描来做一些我无法实现订阅的事情)?

Scan()和Subscribe()在RxJS中是完全不同的概念

Scan是一个运算符,用于将流中的值与流中以前的值进行组合,然后输出它们的一些组合(我认为Scan和reduce是唯一执行此操作的运算符)。Subscribe仅对通过流的当前值起作用

Subscribe是一种特殊的方法,也是RxJS中最重要的概念之一。Subscribe位于可观察流的末尾,在这里您可以使用结果值进行某些操作。从所有其他运营商返回的内容可以沿链传递,但不能从subscribe返回

如果您使用的是冷可观察对象(您经常使用冷可观察对象),那么您需要订阅它才能运行代码。如果您没有对冷可观测流的订阅,那么您的可观测流中的任何代码都不会运行

使用它们的语法也不同。Scan是一个在pipe()方法中链接的操作符,如map、reduce、filter、tap、mergeMap、flatMap等。它看起来像:

myObservable$.pipe(map(...), scan(...), flatMap(...));
Subscribe是一种类似于pipe的方法,可以点链,如:

myObservable$.pipe(...).subscribe(...);