我有一门课Student,它有两个字段grade和school。这两个字段都需要从远程服务器中获取。当返回两个结果时,我新建了一个Student对象。
在的帮助下RxJava,我以两种方式完成了此操作,一种是flatMapin zip运算符,另一种是in 运算符。
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());
Run Code Online (Sandbox Code Playgroud)
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);
});
Run Code Online (Sandbox Code Playgroud)
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);
});
Run Code Online (Sandbox Code Playgroud)
我认为,zip似乎更清楚。那么在这种情况下,flatMap还是zip算算更好?
| 归档时间: |
|
| 查看次数: |
1782 次 |
| 最近记录: |