(五)变换flatmap

Student[] students = ...;
Subscriber<Course> subscriber = new Subscriber<Course>() { 
    @Override 
    public void onNext(Course course) { 
    Log.d(tag, course.getName()); 
    } 
  ...
};

Observable.from(students) 
    .flatMap(new Func1<Student, Observable<Course>>() { 
    @Override 
    public Observable<Course> call(Student student) { 
    return Observable.from(student.getCourses()); 
    } 
}) 
.subscribe(subscriber);

flatMap()的原理是这样的:

  1. 使用传入的事件对象创建一个 Observable对象;
  2. 并不发送这个 Observable, 而是将它激活,于是它开始发送事件;
  3. 每一个创建出来的 Observable发送的事件,都被汇入同一个 Observable,而这个 Observable负责将这些事件统一交给 Subscriber的回调方法。

这三个步骤,把事件拆成了两级,通过一组新创建的 Observable
将初始的对象『铺平』之后通过统一路径分发了下去。而这个『铺平』就是 flatMap()所谓的 flat。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容