map 和 switchMap 一起使用

Use map and switchMap together

我有一个包含普通字段和其他可观察对象的可观察对象。我想获得包含此字段的序列以及相应的可观察值触发值以及内部可观察值。

例如:

var smth$ = interval(1000).pipe(
  take(3),
  map(i => ({
    id: String.fromCharCode('A'.charCodeAt(0) + i),
    value$: interval(300).pipe(
      take(10),
      map(j => i*10 + j)
    )
  }))
)

我可以通过 map:

轻松获取 id 字段的序列
smth$.pipe(
  map(x => x.id)
)

我还可以通过 switchMap:

获得 value 的序列
smth$.pipe(
  switchMap(x => x.value$)
)

但是我怎样才能得到同时具有 idvalue 的对序列?

可运行示例:https://rxviz.com/v/R85xKw6J

你可以试试

smth$.pipe(
    switchMap(x => x.value$.pipe(
        map(d => x.id + d)
    ))
)

平解:https://rxviz.com/v/j8ArKWEo

smth$.pipe(
  switchMap(x => x.value$, (x, d) => x.id + d)
)