9

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

4

3 回答 3

13

Rx.NET 中没有一个 SwitchMany 等效于 Rx.js 中的 switchMap。您需要使用单独的 Select 和 Switch 功能。

Observable.Interval(TimeSpan.FromMinutes(1))
    .Select(_ => Observable.Return(10))
    .Switch()

文档:https ://msdn.microsoft.com/en-us/library/hh229197(v=vs.103).aspx

于 2017-09-08T11:16:18.250 回答
2

来自http://reactivex.io/documentation/operators/switch.html

Switch 操作符订阅一个发出 Observables 的 Observable。每次它观察到其中一个发出的 Observable 时,由 Switch 返回的 Observable 取消订阅先前发出的 Observable,开始从最新的 Observable 发出项目。

正如MorleyDev指出的那样,.NET 实现是https://docs.microsoft.com/en-us/previous-versions/dotnet/reactive-extensions/hh229197(v=vs.103),因此相当于 Rx 中的 RxJS switchMap .NET 是 Switch 和 Select 运算符的组合:

// RxJS
observableOfObservables.pipe(
    switchMap(next => transform(next))
    ...
)

// RX.Net
observableOfObservables
    .Switch()
    .Select(next => transform(next))
    ...
于 2018-10-08T09:43:35.073 回答
-4

编辑

switch是等价的。 http://reactivex.io/documentation/operators/switch.html

简而言之,switchMap它将switch取消任何先前的流,而flatMap不会。

于 2017-03-31T11:31:01.700 回答