当前位置: 首页 > 知识库问答 >
问题:

RXJava:如何完成从一个不同的地方观察?

施招
2023-03-14

我如何在RxJava中创建一个从不同的地方完成的对象(未来),但我想要向某个客户端返回一个可观察的对象?

class DeferredAction {
    private final CompletableFuture<String> future;
    private final Observable<String> observable;
    public DeferredAction() {
        future = new CompletableFuture<>();
        observable = Observable.from(future);
    }

    public Observable<String> observe() {
        return observable;
    }

    public void complete(Stirng value) {
        future.complete(value);
    }
}

共有1个答案

容阳焱
2023-03-14

尽管您应该知道publishSubject,它既是可观察的,也是观察者,但这应该起作用,因此您可以这样做:

PublishSubject<String> subject = PublishSubject.create();
subject.take(10).subscribe(sub1);  
subject.last().subscribe(sub2);
subject.onNext("boo");
subject.onCompleted();

正如您所看到的,此模式还支持多个订阅服务器。

 类似资料:
  • 我目前在Android和Kotlin上使用RxJava,但我有一个问题,如果不使用toBlocking(),我无法解决。 我在员工服务中有一个方法,它返回一个可观察的 这一切都很好,因为每当员工发生变化时,这个可观察对象就会发出新的员工列表。但是我想从员工那里生成一个PDF文件,这显然不需要每次员工更改时都运行。另外,我想从PDF生成器方法返回一个可完成的对象。我想在PDF中添加一个标题,然后遍历

  • 假设我有 我要实现的是一个流,它在doTask()完成后发出一个just(“completed”)项。 对于Observable,我可以执行doTask().map(f->just(“completed”));但是,如果它在完成的过程中没有散发出任何自然的东西,我怎么能做到完全的呢?

  • 我有多个热观测器,它们可能发射也可能不发射项目。因此,我想把可观察项组合起来,然后如果其中任何一个发出结果,就处理结果,但如果其他可观察项在item发出,就应该一起处理。 还有可能在之前发出 最接近我所需要的,但只有当所有可观察到的对象发出至少一个项时才会发出结果。这个有无反应操作符吗?

  • 我正在从事一个涉及Hystrix的项目,我决定使用RxJava。现在,忘记Hystrix的其余部分,因为我相信主要问题是我完全搞砸了正确编写可观察代码。 需要:我需要一种方法来返回一个代表多个可观察对象的可观察对象,每个可观察对象都运行一个用户任务。我希望该可观察对象能够返回任务的所有结果,甚至错误。 问题:可观测流会因错误而消亡。如果我有三个任务,而第二个任务引发了一个异常,那么即使第三个任务成

  • 我对RxJava并不完全陌生,但我被一项看似简单的任务所阻碍。 我有一个数据源,它公开了一个反应式API,我所要做的就是获取一些数据,返回它,并在没有其他消息发出时自动关闭连接。 这是我的代码: conn.query()和conn.close()在不同的调度程序中异步执行。此代码不起作用,因为conn.close()返回一个没有订阅服务器的Completable。此外,如果我手动订阅doOnCom

  • 假设存在包含方法的接口: 实现combinedCall方法的最佳方法是什么: 从makeHttpCall获取数据 使用store InDatabase存储它 返回在store InDatabase完成时完成的完成? 似乎在RxJava 1.0中可以执行Completable.merge(可观察),但合并似乎不再接受可观察。