我想同步发射两个可观测对象(它们是异步的),一个接一个地返回第一个发射的可观测对象。如果第一个失败,则不应发出第二个。
假设我们有一个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<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();
}
}));
您可以使用Single。阻止同步调用的Get
// example
signIn(name,password).blockingGet()
您还可以使用rx.observables.Blocking观察,例如:
BlockingObservable.from(/**/).single();
问题内容: 我想同步地发出两个Observable对象(它们是异步的),一个接一个地返回第 一个 发出的Observable对象。如果第一个失败,则不应发出第二个。 假设我们有一个登录用户的Observable,还有一个登录 后 自动选择用户帐户的Observable 。 这是我尝试的: 不幸的是,这不适用于我的用例。它将以“ ob1”开始并行发出/调用两个可观察对象。 有人遇到过类似的用例吗?还
我正在尝试创建一个RxJava BlockingObservable,它将每隔X毫秒发出一个变量的值,直到(条件==true)或超时发生。 下面的代码似乎与我想要的很接近,但它总是发出一次,然后退出。奇怪的是,我在中有一个永远不会正确的条件——我希望这个可观察到的持续发出并最终超时,但事实并非如此。 我错过了什么/做错了什么?
我有一个项目列表,需要提取一些值并为每个项目调用api。为了做到这一点,我用了这样的东西_ 好吧,问题是,我不知道为什么所有的调用都是并行的。难道它不应该等待第一个响应,映射结果,然后从可观察到的对象开始下一个项目吗。from()并在最后返回responseMessages的最终列表?正在发生的是,一切都同时发生。为了证实这一点,如果我在toList方法之前加上一个延迟(1,TimeUnit.Se
我正在尝试在Android环境中学习rxjava。比方说,我有一个可观察的对象,它发出网络调用的结果。如果我理解正确的话,处理配置更改的一种常见方法是: > 将可观察对象存储在保留的片段/单例/应用程序对象中 将缓存操作符应用于可观察对象 在正确的生命周期处理程序中订阅/取消订阅 这样做,我们就不会失去可观察到的结果,一旦新配置发生,将重新观察到该结果。 现在,我的问题是: 有没有办法强制可观察对
组织。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
问题内容: 我读过有关将对象标记为volatile的方法,不能保证其成员的可见性( 我不是在说线程安全,而只是在内存可见性 ,引用: JVM仅将对象引用视为易失性,而不会将驻留在堆上的对象数据本身视为易失性 我的问题: 如果成员已被编辑,则同步将确保成员(在同一锁定对象上)的可见性。那是因为 发生在锁的末尾(释放)之前, 这使得操作对其他线程可见? 在对象上使用易失性的情况下,对象引用也会更改。如