RxJava等待单个事件,RxJava
如何等待一个值出现在具有timout的可观察对象上 我正在寻找类似于:RxJava等待单个事件,RxJava,java,reactive-programming,rx-java2,reactive,Java,Reactive Programming,Rx Java2,Reactive,如何等待一个值出现在具有timout的可观察对象上 我正在寻找类似于: Observable<Acknowledgement> acknowledgementObservable; port.send(new Message()); Optional<Acknowledgement> ack = acknowledgementObservable.getFirst(100, TimeUnit.MILLISECONDS); 可观察到的确认为可服务; 发送(新消息());
Observable<Acknowledgement> acknowledgementObservable;
port.send(new Message());
Optional<Acknowledgement> ack = acknowledgementObservable.getFirst(100, TimeUnit.MILLISECONDS);
可观察到的确认为可服务;
发送(新消息());
可选ack=AcknowledgementTobservable.getFirst(100,时间单位为毫秒);
首先,将可观察的
转换为可完成的未来
,如中所述:
如果发生超时,它将抛出
TimeoutException
。您可以通过添加.timeout()和.onErrorComplete().blockingGet()来完成此操作
因此,在本例中,它将是:
Acknowledgement ack = acknowledgementObservable
.firstElement()
.timeout(3, TimeUnit.SECONDS)
.onErrorComplete()
.blockingGet();
如果超时被命中,ack将为null。如果发生TimeoutException,这不会导致内存泄漏吗?关于acknowledgementBuffer..getObservable().timeout(100,TimeUnit.Milses).blockingFirst()?你没有告诉任何关于acknowledgementBuffer,所以我不能对这个建议说任何话。对不起,我指的是AcknowledgementToServable.timeout(100,TimeUnit.Milses).blockingFirst()。。
Acknowledgement ack = future.get(100, TimeUnit.MILLISECONDS);
Acknowledgement ack = acknowledgementObservable
.firstElement()
.timeout(3, TimeUnit.SECONDS)
.onErrorComplete()
.blockingGet();