相当于ReactiveX/Rx.NET中的RxJS开关映射



RxJS中,有一个switchMap函数。ReactiveX/Rx.NET中是否有等效项?我在转换文档中没有看到一个。

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

简而言之,switchMapswitch 将取消任何以前的流,而flatMap不会。

相关内容

  • 没有找到相关文章

最新更新