Rxjava Observe 流作为特定时间的列表
Rxjava Observe stream as List for Specific time
我想做什么?
我有一个 observable(dayListener),它在我第一次订阅它时从服务器发出 100 - 300 个项目(未确认可能 return 什么都没有),然后它 returns 1 后 1小时。每个项目都是 UserData
类型
什么是问题?
我想观察来自 (dayListner) 的项目 3 秒并将其转换为 List 并存储它,然后继续观察单个项目的相同观察 UserData
我的尝试
我不知道如何在 rxjava 2 中将 observable 转换 3 秒,因为我不能 return 两种类型用于相同的 observable,UserData 和 List ,所以我无法形成解决方案,任何想法真的很感激!! ,我只是 rxjava 2
的新手
只需使用 2 个不同的 Observable,无论如何你都想监听 2 个不同类型的数据。
第一个 Observable 应该有 3 秒的限制:
firstListObservable = userSourceObservable
.takeUntil(Observable.timer(3, TimeUnit.SECONDS))
.toList()
然后你有其余值的 Observable:
remainingValuesObservable = userSourceObservable
.skipUntil(Observable.timer(3, TimeUnit.SECONDS))
这是你想要的吗?
您可以创建一个 Pair class 并使用 Zip 运算符将两个结果合并为一个 emmited Item
class Pair {
String a;
Integer b;
Pair(String a, Integer b) {
this.a = a;
this.b = b;
}
}
@Test
public void testZipDifferentTypes() {
Observable.zip(obA(), obB(), Pair::new)
.subscribe(System.out::println);
}
private Observable<String> obA() {
return Observable.just("hello");
}
private Observable<Integer> obB() {
return Observable.just(1);
}
我想做什么?
我有一个 observable(dayListener),它在我第一次订阅它时从服务器发出 100 - 300 个项目(未确认可能 return 什么都没有),然后它 returns 1 后 1小时。每个项目都是 UserData
类型什么是问题?
我想观察来自 (dayListner) 的项目 3 秒并将其转换为 List 并存储它,然后继续观察单个项目的相同观察 UserData
我的尝试
我不知道如何在 rxjava 2 中将 observable 转换 3 秒,因为我不能 return 两种类型用于相同的 observable,UserData 和 List ,所以我无法形成解决方案,任何想法真的很感激!! ,我只是 rxjava 2
的新手只需使用 2 个不同的 Observable,无论如何你都想监听 2 个不同类型的数据。
第一个 Observable 应该有 3 秒的限制:
firstListObservable = userSourceObservable
.takeUntil(Observable.timer(3, TimeUnit.SECONDS))
.toList()
然后你有其余值的 Observable:
remainingValuesObservable = userSourceObservable
.skipUntil(Observable.timer(3, TimeUnit.SECONDS))
这是你想要的吗?
您可以创建一个 Pair class 并使用 Zip 运算符将两个结果合并为一个 emmited Item
class Pair {
String a;
Integer b;
Pair(String a, Integer b) {
this.a = a;
this.b = b;
}
}
@Test
public void testZipDifferentTypes() {
Observable.zip(obA(), obB(), Pair::new)
.subscribe(System.out::println);
}
private Observable<String> obA() {
return Observable.just("hello");
}
private Observable<Integer> obB() {
return Observable.just(1);
}