为什么我的 RxObservable 永远不会触发?

Why does my RxObservable never fire?

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

预期输出为:

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

但是,它从不压入元素、抛出错误或调用完成。

这是为什么?

您的主线程可能已退出,因此进程在您看到任何输出之前就停止了。

添加闩锁或其他一些机制来让主线程不退出。

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