为什么我的RxObservable从不开火?

时间:2017-06-26 12:33:18

标签: java rx-java rx-java2

我有一个硬编码的可观察序列,用一个间隔序列压缩。目的是为每个元素引入延迟。

预期输出为:

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. "));

但是,它从不推送元素,抛出错误或调用完成。

这是为什么?

1 个答案:

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