gpt4 book ai didi

java - RxJava Observable 在 SpringBoot 项目中运行

转载 作者:行者123 更新时间:2023-11-30 07:05:23 35 4
gpt4 key购买 nike

我有使用 RxJava 中的 Observable 的代码,它正在观察 C 驱动器中的变化,

File file = new File("C:\\");
Observable
.interval(1, TimeUnit.SECONDS)
.concatMapIterable(x -> files(file))
.distinct()
.toBlocking()
.subscribe(System.out::println);

代码打印例如新文件夹。

现在我想让它在 Spring-Boot 应用程序运行时一直运行。现在,当我在 @Test 方法中运行它时,它就可以工作了。我知道我可以通过 JavaSE 或调度来做到这一点,但我想这样做。

最佳答案

toBlocking 运算符用于阻止观察者,直到发出所有项目,但在您的示例中,您正在订阅,因此您可能已经在等待所有项目被发出。

您仍然可以使用这种方式,但由于您使用的是异步执行管道的间隔,您可能希望在主线程中获取结果,因此您可以使用observerOn运算符

Scheduler scheduler;//Main thread

Observable
.interval(1, TimeUnit.SECONDS)
.concatMapIterable(x -> files(file))
.distinct()
.observerOn(scheduler)
.subscribe(System.out::println);

您可以在此处查看一些异步示例 https://github.com/politrons/reactive/blob/master/src/test/java/rx/observables/scheduler/ObservableAsynchronous.java

关于java - RxJava Observable 在 SpringBoot 项目中运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40233646/

35 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com