【发布时间】:2017-05-26 15:13:56
【问题描述】:
使用 rxjava2,我试图创建两个无限整数流序列,将这些序列组合在一起以创建对并打印结果。
由于我不明白的原因,我下面的代码在执行 zip 函数时创建了一个无限循环。这就像 zip 函数在开始发射项目之前等待两个无限序列完成。
我怎样才能使下面的工作?
例如:
- seq1 = 1, 2, 3,...,无限
- seq2 = 5, 10, 15,..., 无限
- zip(seq1, seq2)= (1,5), (2,10), (3,15),..., 无限
我的代码如下:
public Observable<Integer> intervalSequence(int start, int step)
{
return Observable.generate(()->start,
(s, emitter)->{
int next = s+step;
emitter.onNext(next);
return next;
});
}
public Observable<Pair<Integer, Integer>> pageRange(int pageSize){
Observable<Integer> from = intervalSequence(1, pageSize);
Observable<Integer> to = intervalSequence(pageSize, pageSize);
Observable<Pair<Integer, Integer>> fromTo = Observable.zip(from, to, (f, t) -> {
return Pair.of(f, t);
});
return fromTo;
}
@Test
public void pageRangeTest() throws Exception {
//works
intervalSequence(1, 5).take(5).doOnNext(nmb -> System.out.println(nmb)).subscribe();
//Doesn't work
pageRange(5).take(5).doOnNext(pair -> System.out.println("left: "+pair.getLeft()+" right: "+pair.getRight())).subscribe();
}
如何让pageRange(5).take(5).doOnNext(pair -> System.out.println("left: "+pair.getLeft()+" right: "+pair.getRight())).subscribe(); 打印我的值?
感谢您的帮助。
【问题讨论】:
-
使用
Flowable。 -
@akarnokd 谢谢!有用。非常感谢您的快速帮助。
标签: rx-java2