当我们确切地知道有多少个具有确切类型的可观察量并且我们想要压缩时,我们会这样做
Observable<String> data1 = Observable.just("one", "two", "three", "four", "five");
Observable<String> data2 = Observable.just("one", "two", "three", "four", "five");
Observable<String> data3 = Observable.just("one", "two", "three", "four", "five");
Observable.zip(data1, data2, data3, (a, b, c) -> a + b + c);
我们使用固定参数函数接口,它接受 3 个参数......在这种情况下它工作正常。
但如果我们知道我们有 N 个Observable<T>
where T
是一样的类型我们怎么压缩呢?消费者功能可以是T...
但我没有看到任何方法来实现这个......
UPDATE
我试图在这里解决的实际问题是我有一些Observable<T>
我想分叉加入这些并只选择一个T
最后发出...
想象几个可观察到的发射T
我只想将其中一个与其他可观察到的进行比较并发出......
SOLUTION
正如回答中所说,有一个 zip 需要一个可迭代对象和一个函数,示例代码如下所示
Observable<String> data1 = Observable.just("one", "two", "three", "four", "five");
Observable<String> data2 = Observable.just("one", "two", "three", "four", "five");
Observable<String> data3 = Observable.just("one", "two", "three", "four", "five");
List<Observable<String>> iter = Arrays.asList(data1, data2, data3);
Observable.zip(iter, args1 -> args1).subscribe((arg)->{
for (Object o : arg) {
System.out.println(o);
}
});
这将产生
one
one
one
two
two
two
three
three
three
four
four
four
five
five
five