寻找 Rxjava 运算符将源合并到一个流中 目前有这个
Disposable observable = Observable.concat(
service.loadPopCells().toObservable(),
service.loadChallangeData().toObservable(),
service.loadUserCell().toObservable()
)
.subscribe(data->sendtoViewmodel(data)); // called 3 times
我有3个流,所以订阅被调用了三次,但我希望它被所有数据调用一次
希望得到这样的东西
Disposable observable = Observable.concat(
service.loadPopCells().toObservable(),
service.loadChallangeData().toObservable(),
service.loadUserCell().toObservable()
)
// i want to achieve something like this
.mapallresult(data,data2,data3){
private List<SimpleCell> shots = new ArrayList<>();
shots.add(data);
shots.add(data2);
shots.add(data2);
return shots; }
///
.subscribe(dataList->sendtoViewmodel(dataList); // called once
最佳答案
zip
运算符将帮助您:
Observable.zip(
service.loadPopCells().toObservable(),
service.loadChallangeData().toObservable(),
service.loadUserCell().toObservable(),
(data1, data2, data3) -> Arrays.asList(data1, data2, data3))
.subscribe(dataList -> sendtoViewmodel(dataList));
}
或者更短:
Observable.zip(
service.loadPopCells().toObservable(),
service.loadChallangeData().toObservable(),
service.loadUserCell().toObservable(),
Arrays::asList)
.subscribe(this::sendtoViewmodel);
关于java - 寻找 Rxjava 运算符将源合并到一个流中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47428777/