希望这个问题不是太高级别。 我在连接到Spotify Web API(使用Retrofit)时正在使用Android应用程序,最终结果是从其他API调用收集的数据生成的轨道列表,例如用户顶部轨道,顶级艺术家等...因为我需要的最终结果是从几个不同的API调用构建的,我关注逻辑有点混乱,目前它本质上是:
getFirstBitofRequiredData -> onDataReady -> getNextBitofData -> OnDataReady -> getMoreData(combinedDataSets) -> onDataReady -> createDataModelObjectsForView(moreCombinedDataSets)
无论如何都有这样的效果!我想知道是否有任何具体的架构方法来实现这种顺序和组合的数据获取方法?
提前致谢,
加里
答案 0 :(得分:1)
这不是一个完整的答案,但应该可以帮助你更多地了解Rx的东西。重点是使用Rx,您可以按照呼叫进行所有这些操作。这意味着,调用回调不会遍布整个班级,并且很容易阅读/理解正在发生的事情。
我将全心全意地输入一个伪代码,所以你必须实际挖掘文档才能看到。但它应该指出你想要实现的例子。
Data1 d1;
Data2 d2;
Data3 d3;
retrofit.getData1(param) // the retrofit observable
.flatMap(new Function<Data1, ObservableSource<Data2>() {
@Override
public Observable<Data2> call(Data1 data1){
d1 = data1;
return retrofit.getData2(data1.val);
}
});
.flatMap(new Function<Data2, ObservableSource<Data3>() {
@Override
public Observable<Data3> call(Data2 data2){
d2 = data2;
return retrofit.getData3(data2.val);
}
})
.observeOn(... UI thread)
.subscribe( ...
... now you have all the data here ...