我有一门课叫
Student
它有两个字段
grade
和
school
。这两个字段都需要从远程服务器获取。当返回两个结果时,我新建了一个
大学生
对象
借助于
RxJava
,我有两种方法,一种是
flatMap
还有一个
zip
操作人员
Observable<String> gradeObservable =
Observable.create((ObservableOnSubscribe<String>) emitter -> {
Thread.sleep(1000);
emitter.onNext("senior");
}).subscribeOn(Schedulers.io());
Observable<String> schoolObservable =
Observable.create((ObservableOnSubscribe<String>) emitter -> {
emitter.onNext("MIT");
}).subscribeOn(Schedulers.io());
平面图版本
gradeObservable
.flatMap(grade ->
schoolObservable.map(school -> {
Student student = new Student();
student.grade = grade;
student.school = school;
return student;
}))
.subscribe(student -> {
System.out.println(student.grade);
System.out.println(student.school);
});
zip版本
Observable.zip(gradeObservable, schoolObservable, (grade, school) -> {
Student student = new Student();
student.grade = grade;
student.school = school;
return student;
}).subscribe(student -> {
System.out.println(student.grade);
System.out.println(student.school);
});
在我看来,
拉链
看起来更清楚了。所以
在这种情况下,操作员
平面图
或
拉链
更好
?