使用rxjava的同步方法
我有以下几种情况-使用rxjava的同步方法,java,android,rx-java2,Java,Android,Rx Java2,我有以下几种情况- 假设我有两个异步回调(假设我调用了两个不同的API)方法callback1(数据d1)和callback2(数据d2),基于d1和d2(即当两个回调方法都被调用时),我必须调用一个方法Say setupUI(),如何使用RxJava高效地做到这一点 有两个ViewPager v1和v2需要同步,即在v1上,pagechange v2也将使用Rxjava更改其当前页面(索引将相同),反之亦然 尝试将主题放在回调中,以将它们转换为rx流 然后,您可以压缩这两个主题并订阅压缩后的可
尝试将主题放在回调中,以将它们转换为rx流 然后,您可以压缩这两个主题并订阅压缩后的可观察对象,以同时获得两个回调的结果 让我们做两个主题
PublishSubject<Data> subject1 = PublishSubject.create();
PublishSubject<Data> subject2 = PublishSubject.create();
现在,我们可以在它们都发出这样的东西时获得输出:
public void callback1(Data d1) {
subject1.onNext(d1);
}
public void callback2(Data d2) {
subject2.onNext(d2);
}
class DataDto {
Data data1;
Data data2;
DataDto(Data data1, Data data2) {
this.data1 = data1;
this.data2 = data2;
}
}
public void main() {
Observable.zip(subject1, subject2, new BiFunction<Data, Data, DataDto>() {
@Override
public DataDto apply(@NonNull Data data1, @NonNull Data data2) throws Exception {
return new DataDto(data1, data2);
}
}).subscribe(new Consumer<DataDto>() {
@Override
public void accept(@NonNull DataDto dataDto) throws Exception {
//do something
}
});
}
classdatadto{
数据1;
数据2;
DataDto(数据data1、数据data2){
this.data1=data1;
this.data2=data2;
}
}
公共图书馆{
zip(subject1,subject2,新的双函数(){
@凌驾
要应用的公共数据(@NonNull Data data1,@NonNull Data data2)引发异常{
返回新的数据到(数据1,数据2);
}
}).订阅(新消费者){
@凌驾
public void accept(@NonNull DataDto DataDto)引发异常{
//做点什么
}
});
}
zip所做的是等待两个流都发出,然后作为一个项目发出
这里我们制作了一个DataDto,它包含data1和data2
希望这有帮助谢谢代码,我已经解决了这样的问题,而不是使用DisposableObserver