项目场景:
很常见的场景,先获取用户的Token再获取用户信息。如果用RXJS来做的话,能减少很多全局变量
主要用到的操作符 concatMap 合并操作符。用于合并可观察对象
他接受一个回调函数
入参就是上一个流发送得到的数据
区别:
switchMap 总是会抛弃前一个请求的结果,concatMap不会。
注意 fromEvent 也是创建了一个可观察对象。
fromEvent(button,"click")
.pipe(
concatMap(event => from(axios.get("http://locahost:4400/token")).pipe(
pluck("data","token")
)
),
concatMap( token => from(axios.get("http://userInfo")).pipe(pluck("data")) )
).subscribe(console.log)
from的作用:axios返回的是一个promise,我们需要一个可观察对象,所以需要 from 操作符把promise转为可观察对象。
pluck的作用:选择属性来发出,主要是用来提取嵌套的属性
最后打印出的是最后一个数据流发出的数据 。