我不知道在最后一张地图中获取可观察值2的方法,这是一个示例
return observable1.pipe(
map((value1: value1) => {
return observable2;
}),
mergeMap((value2: value2) => {
return observable3;
}),
map((value3: value3) => {
// how can i get value 2 inside here?
}),
mapTo(null)
);
答案 0 :(得分:1)
不确定要完成的工作,可能是您以错误的方式来解决问题。如果您只需要访问value2,那么它同样会为您服务。
return observable1.pipe(
map((value1: any) => {
return observable2;
}),
mergeMap((value2: any) => {
// pass both value 2 and observe3 to the next operator
return of({observable3, value2});
}),
map((obs: any) => {
console.log(obs.observable3);
console.log(obs.value2);
return obs.observable3;
// how can i get value 2 inside here?
}),
mapTo(null)
);
答案 1 :(得分:0)
如果observable2$
和observable3$
可以并行运行,则可以使用combineLatest
解决此问题
import {
...
combineLatest,
} from 'rxjs';
observable1$.pipe(
map(() => combineLatest(
observable2$,
observable3$
)),
mergeMap(([value2, value3]) => {
return value3;
}),
mapTo(null)
)
请注意:有2个combineLatest
函数,其中一个来自rxjs
,一个来自rxjs/operators
。此代码在rxjs
如果observable3$
在observable3$
之后运行,则解决方案相似,仅需一步即可映射数据
import {
...,
of,
combineLatest,
} from 'rxjs';
observable1$.pipe(
map(() => observable2$)
mergeMap((value2) => combineLatest(
of(value2),
observable3$
)),
mergeMap(([value2, value3]) => {
return value3;
}),
mapTo(null)
)