我有以下几种情况 -
答案 0 :(得分:1)
尝试将主题放入回调中以将其转换为rx流。
然后你可以将两个主题压缩并订阅压缩的observable以同时获得两个回调的结果
示例:让我们制作两个主题
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
}
});
}
在两个流都发出之前它会等待什么拉链,然后将其作为一个项目发出。
这里我们创建了一个包含data1和data2
的DataDto希望这有帮助