flatMap() 的原理是这样的:
- 1.使用传入的事件对象创建一个 Observable 对象;
- 2.并不发送这个 Observable, 而是将它激活,于是它开始发送事件;
- 3.每一个创建出来的 Observable 发送的事件,都被汇入同一个 Observable ,而这个 Observable负责将这些事件统一交给 Subscriber 的回调方法
- 这三个步骤,把事件拆成了两级,通过一组新创建的 Observable 将初始的对象『铺平』之后通过统一路径分发了下去。而这个『铺平』就是 flatMap() 所谓的 flat
- Oberverable** 相当于服务器**,在GET/POST请求后,返回数据给subscriber
flatmap的参数理解
@requires_authorization
ConnectionBase.getApiService2()
.getStudents(101)
.flatMap(new Func1<student, observable<course="">>() {
@Override
public Observable<course> call(Student student) {
return ConnectionBase.getApiService2().getAllCourse(student.getId());
}
})
Func1有两个入参,前者是原始的参数类型,后者是返回值类型;