在RxJS中,有一个switchMap函数。ReactiveX/Rx.NET中是否有等效项?我在转换文档中没有看到一个。
没有一个 SwitchMany,相当于 Rx.js 中的 switchMap。您需要使用单独的选择和切换功能。
Observable.Interval(TimeSpan.FromMinutes(1))
.Select(_ => Observable.Return(10))
.Switch()
文档:https://msdn.microsoft.com/en-us/library/hh229197(v=vs.103(.aspx
来自 http://reactivex.io/documentation/operators/switch.html
开关操作员订阅发出 可观察量。每次它观察到这些发出的可观察量之一时, Switch 返回的可观察量取消订阅 以前发出的可观察量开始从最新的 观察。
正如MorleyDev所指出的,.NET实现是 https://learn.microsoft.com/en-us/previous-versions/dotnet/reactive-extensions/hh229197(v=vs.103(,所以Rx.NET 中相当于 RxJS switchMap 的是 Switch 和 Select 运算符的组合:
// RxJS
observableOfObservables.pipe(
switchMap(next => transform(next))
...
)
// RX.Net
observableOfObservables
.Switch()
.Select(next => transform(next))
...
编辑
switch
是等效的。 http://reactivex.io/documentation/operators/switch.html
简而言之,switchMap
和 switch
将取消任何以前的流,而flatMap
不会。