Rx java 在自定义事件之后开始发射值

Rx java 在自定义事件之后开始发射值,rx-java,Rx Java,我有一个后台任务和一些在任务进行期间订阅的可观察的任务。我希望这些观测值仅在后台任务完成后才开始发射值。我的第一个想法是使用Observable.create()和它内部的一些阻塞机制来等待任务。但是我想知道是否有rx操作员来执行此操作。在后台任务完成时使用flatMap Observable.create({ -> // doing background task... }) .onSubscribe(Schedules.newThread()) .flatMap(()

我有一个后台任务和一些在任务进行期间订阅的可观察的
任务。我希望这些观测值仅在后台任务完成后才开始发射值。我的第一个想法是使用
Observable.create()
和它内部的一些阻塞机制来等待任务。但是我想知道是否有rx操作员来执行此操作。

后台任务完成时使用
flatMap

Observable.create({
    ->
    // doing background task...
})
.onSubscribe(Schedules.newThread())
.flatMap(() -> getOtherObservable())
.subscribe(() -> {
    // onNext...
});

private Observable getOtherObservable(){
    // return other Observable
    return ...;
}

您可以使用
onCompleted
方法订阅网络请求。 被观测对象只有在拥有订户后才会开始发出值

这里不需要阻塞-只需在第一个完成时执行下一个需要的操作

编辑:您不必使用相同的方法进行实际订阅 您可以返回根据任务结果创建的可观察对象
然后进行订阅的客户端应该在您的可观察对象的
onCompleted
上进行订阅。这就是返回一个可观察对象的想法-您不需要等待任务完成。

您需要在任务完成后开始监听事件,还是需要获取事件并等待任务结束?@Elyran,假设每个可观察对象都是一些网络请求。我希望他们只在后台任务完成后才开始执行这些请求。不幸的是,这不适合我的情况,订阅发生在客户端类中,我必须返回可观察对象。这是一种很好的处理单个可观察对象的方法,但我有一些必须同时做出反应