我是RxJava的初学者,如果这很明显就道歉......
我想进行一次服务器调用,同步返回id
。我有一个独立的异步事件机制,用于接收回我的客户端应用程序的通知,我将其映射到rxjava流。我期待一个通知"稍后"与前面提到的id
。
通常情况下,我当然会异步使用这些通知,但我也想证明我可以阻止,等待相关的通知(过滤前面提到的id
)。
Observable<Notification>
id
。Notification notn = ... myObservables(notn -> notn.getId().equals(id)).toBlocking() ....
我认为必须有一个简单的模式,例如步骤#1中的一种方法是从该点开始排队通知以避免在我们开始等待之前通知已经到达的#3处的竞争条件?
编辑:我遵循似乎有效的方法。这是明智的还是有更好的方式......// This is NOT a idiomatic pattern, only used to demo how you would blocking for
// the Notification
// Avoid race cond by storing up the notifications
ReplaySubject<Notification> mySubject = ReplaySubject.create();
myNotnObservables.subscribe(mySubject);
final Long id = // obtain id via a synchronous request to server.
return mySubject.timeout(10, TimeUnit.SECONDS).
filter(notn -> notn.getId().equals(id)).
toBlocking().first();