我需要调用3个不同的api ...每个api按顺序输入另一个api输出..
例如:API1 - >输出 - >将输入API2 API2 - >输出 - >将输入API3
在我的情况下,Spinner包含API1 ....在微调器上选择我需要调用API2,依此类推 目前我正在为每个API编写一个单独的代码,并使用Observer调用它们...但我想使用RxJava,RxKotlin和Retrofit flatmap concepts按顺序调用API。所以有任何方法使用它,我可以调用这三个API顺序,而不是单独写每一个
答案 0 :(得分:1)
从Surinder共享的链接中添加了片段
public Single<List<Restaurant>> getRestaurants(int userId) {
return ddApi.getUserInfo(userId).flapMap(user -> {
return ddApi.getAvailableRestaurants(user.defaultAddress.lat,
user.defaultAddress.lng);
});
}
public class RestaurantFragment {
private CompositeDisposables disposables = new CompositeDisposables();
private RestaurantDataSource restaurantDataSource;
@Override
public void onResume() {
// subscribe to the Single returned by RestaurantApi
restaurantDataSource
.getRestaurants(userId)
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new SingleObserver<Restaurant>() {
@Override
public void onSubscribe(Disposable d) {
disposables.add(d);
}
@Override
public void onSuccess(List<Restaurant> restaurants) {
// update the adapter with restaurants
}
@Override
public void onError(Throwable e) {
// display an error message
}
});
}
@Override
public void onPause() {
disposables.clear();
}
}
答案 1 :(得分:0)