我想同步地发出两个Observable对象(它们是异步的),一个接一个地返回第 一个 发出的Observable对象。如果第一个失败,则不应发出第二个。
假设我们有一个登录用户的Observable,还有一个登录 后 自动选择用户帐户的Observable 。
这是我尝试的:
public Observable<AccessToken> signInAndSelectAccount(String username, String password)
{
Observable<AccessToken> ob1 = ...; // Sign in.
Observable<Account> ob2 = ...; // Select account.
return Observable.zip(
ob1,
ob2,
new Func2<AccessToken, Account, AccessToken>() {
@Override
public AccessToken call(AccessToken accessToken, Account account)
{
return accessToken;
}
});
}
不幸的是,这不适用于我的用例。它将以“ ob1”开始并行发出/调用两个可观察对象。
有人遇到过类似的用例吗?还是对如何使可观测对象以同步方式彼此等待,可以将第一个发出的事件返回的想法有所了解?
提前致谢。
在反应式编程中没有“等待”这样的术语。您需要考虑创建一个数据流,其中一个数据流Observable
可能被另一个触发。对于您的情况,token
您需要在收到后account
。它可能看起来像这样:
Observable<Account> accountObservable = Observable.create(new Observable.OnSubscribe<AccessToken>() {
@Override public void call(Subscriber<? super AccessToken> subscriber) {
subscriber.onNext(new AccessToken());
subscriber.onCompleted();
}
}).flatMap(accessToken -> Observable.create(new Observable.OnSubscribe<Account>() {
@Override public void call(Subscriber<? super Account> subscriber) {
subscriber.onNext(new Account(accessToken));
subscriber.onCompleted();
}
}));
我想同步发射两个可观测对象(它们是异步的),一个接一个地返回第一个发射的可观测对象。如果第一个失败,则不应发出第二个。 假设我们有一个Observable可以让用户登录,另一个Observable可以在登录后自动选择用户的帐户。 这就是我所尝试的: 不幸的是,这不适用于我的用例。它将发出/调用两个平行的观测值,从“ob1”开始。 是否有人遇到过类似的用例?或者有没有一个想法,如何让可观测对象以同步
我正在尝试创建一个RxJava BlockingObservable,它将每隔X毫秒发出一个变量的值,直到(条件==true)或超时发生。 下面的代码似乎与我想要的很接近,但它总是发出一次,然后退出。奇怪的是,我在中有一个永远不会正确的条件——我希望这个可观察到的持续发出并最终超时,但事实并非如此。 我错过了什么/做错了什么?
我有一个服务,有一个方法foo。在该方法中,我订阅了一个可观察的(超文本传输协议-客户端)。 我喜欢从foo返回一个布尔值,该值取决于get。这不起作用,因为http.get是asynchrouns-在http.get完成之前调用return。 我怎样才能使这个同步? 编辑 返回可观察的布尔值在这里不是一个选项。这是因为我处理get in foo的响应(此处未显示),但我也需要根据它的返回来执行f
使用rxjsv6 所以我有多个我想要跟踪/观察的变量,当它们中的任何一个发生变化时,触发一个可观察对象来调用一个API,该API然后根据这些变量更新其他内容。 我想我可能会在上触发一个事件来强制可观察对象做一些事情,但它不会根据我想要的返回结果 例如。 然而,在可观测数据上没有订阅方法。我试图修改我的另一个观察值(这是可行的)
下面的代码仅在观察2完成后才从观察1发出项。 我需要实现另一种行为 第二个可观测对象仅发射项目,而第一个可观测对象为空,然后发射第一个可观测对象的项目。 我无法找到只使用基本运算符的正确解决方案,自定义运算符startWithDefault的正确RxJava 2实现应该是什么样子? 附笔。 由于种族原因,在可观察到立即发射的情况下,这不是正确的解决方案1
组织。springframework。靴子加载器。默认情况下,Launcher将始终在launch()方法中生成一个后台线程(https://github.com/spring-projects/spring-boot/blob/master/spring-boot-tools/spring-boot-loader/src/main/java/org/springframework/boot/lo