在 RxJS 中,有switchMap个功能。 ReactiveX / Rx.NET 中是否有等价物?我在transforming文档中没有看到一个。
答案 0 :(得分:5)
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
答案 1 :(得分:1)
来自http://reactivex.io/documentation/operators/switch.html
Switch运算符订阅发出的Observable 可观察的。每当它观察到这些发射的可观察物之一时, 交换机返回的Observable取消订阅 先前发射的Observable开始发射最新的 可观察的。
正如MorleyDev所指出的,.NET实现为https://docs.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))
...
答案 2 :(得分:-3)
修改强>
switch
是等价的。 http://reactivex.io/documentation/operators/switch.html
简而言之,switchMap
和switch
会取消之前的所有流,而flatMap
则不会。