首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用RxJava、Retrofit、RxKotlin flatmap依次调用多个接口

使用RxJava、Retrofit、RxKotlin flatmap依次调用多个接口
EN

Stack Overflow用户
提问于 2018-01-20 13:33:56
回答 2查看 2.9K关注 0票数 2

我需要调用3个不同的接口...each api依次接受另一个接口输出的输入..

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

在我情况下,微调器包含API1 ....On微调器选择,我需要调用API2等。目前我正在为每个API编写单独的代码,并使用Observer...but调用它们。我想使用RxJava、RxKotlin和Retrofit flatmap依次调用API。concepts.So是否有任何方法使用它们,我可以依次调用这三个API,而不是分别编写它们。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-01-20 13:40:41

Stack Overflow用户

发布于 2020-02-19 16:08:45

添加来自Surinder共享的链接的代码片段

代码语言:javascript
复制
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
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48352964

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档