gpt4 book ai didi

rx-java - 在 RxJava2 中使用 flatMap 还是 zip?

转载 作者:行者123 更新时间:2023-12-02 13:46:39 25 4
gpt4 key购买 nike

我有一个名为 Student 的类(class),它有两个字段 gradeschool。这两个字段都需要从远程服务器获取。当返回两个结果时,我新建了一个 Student 对象。

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());

平面 map 版本

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);
});

在我看来,zip 似乎更清晰。那么在这种情况下,运算符 flatMapzip 更好

最佳答案

你显然正在组合两个可观察的,这就是 zip() 的目的。不仅如此,gradeObservableschoolObservable 将与 zip() 并行执行,而您的 flatmap() 解决方案会序列化请求。所以,是的,zip() 更好。

关于rx-java - 在 RxJava2 中使用 flatMap 还是 zip?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49177746/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com