1
NoDocCat 2022-01-21 14:52:05 +08:00 1
拆成两个部分考虑:
第一个是 BCD 合并成一个, 很明显是 forkJoin. 第二个是 A -> BCD, 很明显是 mergeMap |
2
Newyorkcity OP @NoDocCat 第一个的 forkJoin 无法用在 pipe 里。。如果加一层 mergeMap 的话,第二个操作符又无法区分自己拿到的数据是 B 还是 C 还是 D 响应的。。
|
3
Zhuzhuchenyan 2022-01-21 19:49:02 +08:00 1
一楼说的或许是这种
A.pipe(mergeMap(valueA => forkJoin([B, C, D]))).subscribe(([valueOfB, valueOfC, valueOfD]) => {}); |
4
dengshen 2022-03-15 19:04:11 +08:00 via iPhone
问一下楼主。在 rxjs 中一般函数是用 last ValueFrom 返回 promise 还是直接用 rx 对象?
|
5
Newyorkcity OP @dengshen 我建议是返回 Observable 对象,如果对数据的操作是公有的,则在 pipe 里用 rx 操作符处理。
|
6
dengshen 2022-03-15 22:51:18 +08:00
@Newyorkcity #5
请问一下, 在 pipe 中发送一个请求后, 在后续的 pipe 中拿不到数据, 这种情况要怎么处理呢? ``` a.pipe( map(res => res.data), map(data => { if(data.id){ return ajax() }else{ return data } }), ) .pipe( map(result => { console.log(result) // undefine }) ) ``` |
7
Newyorkcity OP @dengshen
return ajax() 相当于另一个 Observable 替换掉了当前的这个吗?可以去学习一下 switchMap 这个操作符,或许能解决你的问题。 https://rxjs.dev/api/operators/switchMap |
8
dengshen 2022-03-17 00:06:35 +08:00 via iPhone
@Newyorkcity 谢谢
|