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$)
)
但是我怎样才能得到同时具有 id
和 value
的对序列?
你可以试试
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)
)
我有一个包含普通字段和其他可观察对象的可观察对象。我想获得包含此字段的序列以及相应的可观察值触发值以及内部可观察值。
例如:
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$)
)
但是我怎样才能得到同时具有 id
和 value
的对序列?
你可以试试
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)
)