请问 这里 A.pipe( operator1(B,C,D), operator2(//do something)) 的 operator1 和 operator2 应该用?
谢谢
谢谢
|
1
拆成两个部分考虑:
第一个是 BCD 合并成一个, 很明显是 forkJoin. 第二个是 A -> BCD, 很明显是 mergeMap |
|
2
@NoDocCat 第一个的 forkJoin 无法用在 pipe 里。。如果加一层 mergeMap 的话,第二个操作符又无法区分自己拿到的数据是 B 还是 C 还是 D 响应的。。
|
|
3
一楼说的或许是这种
A.pipe(mergeMap(valueA => forkJoin([B, C, D]))).subscribe(([valueOfB, valueOfC, valueOfD]) => {}); |
|
dengshenMar 15, 2022 via iPhone
4
问一下楼主。在 rxjs 中一般函数是用 last ValueFrom 返回 promise 还是直接用 rx 对象?
|
|
5
@dengshen 我建议是返回 Observable 对象,如果对数据的操作是公有的,则在 pipe 里用 rx 操作符处理。
|
|
dengshenMar 15, 2022
6
@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
@dengshen
return ajax() 相当于另一个 Observable 替换掉了当前的这个吗?可以去学习一下 switchMap 这个操作符,或许能解决你的问题。 https://rxjs.dev/api/operators/switchMap |
|
dengshenMar 17, 2022 via iPhone
8
@Newyorkcity 谢谢
|