我有一个硬编码的可观察序列,用一个间隔序列压缩。目的是为每个元素引入延迟。
预期输出为:
1
2
3
Done.
以下是代码:
Observable.just(1, 2, 3)
.zipWith(Observable.interval(1000L, TimeUnit.MILLISECONDS), (x, y) -> x)
.subscribe(
System.out::println,
Throwable::printStackTrace,
() -> System.out.println("Done. "));
但是,它从不推送元素,抛出错误或调用完成。
这是为什么?
答案 0 :(得分:2)
您的主线程可能会退出,因此在您看到任何输出之前,该过程会停止。
添加一个锁存器或其他机制以使主线程不退出。
CountDownLatch l = new CountDownLatch(1);
Observable.just(1, 2, 3)
.zipWith(Observable.interval(1000L, TimeUnit.MILLISECONDS), (x, y) -> x)
.subscribe(
System.out::println,
Throwable::printStackTrace,
() -> {
System.out.println("Done. ");
l.countDown();
}
);
l.await();