1. 写在前面
我们在开发过程中经常会碰到一个页面需要请求多个接口然后刷新界面数据,当然做这种需求的解决方式有很多,但是都不是很好 比如
- 后台更改接口,所有数据做成一个接口
后台系统一般来说比较成熟,而且开发进度在前端前面,一般不会为了前端做出很大的改变,并且需求是一只加,谁也不清楚,一个界面需要的数据到底需要多少,包括后台
- 一个接口接着一个请求,请求成功或者失败做其他接口的请求
这样子当然可以,但是逻辑上就复杂了并且以后的维护非常麻烦,比如 A B C三个接口,在A请求成功后请求B,B请求成功后请求C,这样的嵌套请求非常不优雅
- 当然也可以三个并排请求
什么也不管比如一进入页面三个ABC接口都放在初始方法中,但是这样有些风险,因为接口请求都是异步的,谁也琢磨不到三个接口的先后顺序,万一 前面接口的成功与否关系到后面接口就会报错,并且如果需求是有先后顺序的请求呢?所以这种是最不推荐的,但是也是平常非常不容易忽略的
2. 解决
我这边使用的是RxJava解决的,解决的方式一般有人使用zip,也有人使用merge,到底使用哪个操作符?我试了下 貌似两个都没问题,查了很多资料
发现这位博主分析的非常详细