使用RxJava,Retrofit,RxKotlin flatmap按顺序调用多个API

时间:2018-01-20 05:33:56

标签: android kotlin flatmap

我需要调用3个不同的api ...每个api按顺序输入另一个api输出..

例如:API1 - >输出 - >将输入API2      API2 - >输出 - >将输入API3

在我的情况下,Spinner包含API1 ....在微调器上选择我需要调用API2,依此类推 目前我正在为每个API编写一个单独的代码,并使用Observer调用它们...但我想使用RxJava,RxKotlin和Retrofit flatmap concepts按顺序调用API。所以有任何方法使用它,我可以调用这三个API顺序,而不是单独写每一个

2 个答案:

答案 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)