为什么我的 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();
我有一个用间隔序列压缩的硬编码可观察序列。目的是为每个元素引入延迟。
预期输出为:
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();