【问题标题】:RXAndroid: Observable wait for another observable completeRXAndroid:Observable 等待另一个 observable 完成
【发布时间】:2017-08-08 10:48:23
【问题描述】:

我正在使用 Retrofit 和 RxAndroid。现在我想调用 api 来获取用户信息,然后使用这个信息作为参数来调用另一个 api 来获取更多信息。 我应该怎么做才能达到这个目的?

P/S:可以用回调来做,但我想用RX-Android风格做

【问题讨论】:

    标签: android reactive-programming rx-android


    【解决方案1】:

    您可以为此使用flatMap。

    伪代码:

    apiService.getUser()
        .flatMap(user -> apiService.getUserMessages(user.getId()))
        .subscribe(messages -> {
    
        }, error -> {
    
        });
    

    【讨论】:

      【解决方案2】:

      你可以这样做:

      Observable<User> userObservable = api.getUserInformation();
      userObservable.subscribeOn(Schedulers.newThread())
                      .observeOn(AndroidSchedulers.mainThread())
                      .subscribe(new Consumer<User>() {
                          @Override
                          public void accept(User user) throws Exception {
                              //do what you want this the user
                          }
                      });
      

      以下代码将在新线程中执行操作,并在主线程上调用回调。

      【讨论】:

        【解决方案3】:

        如果你想要递归,你应该使用concatMap()。此方法将确保您以指定的顺序进行多次调用。 flatMap() 更随机。

        您可以查看有关此link 的更多信息。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2021-08-28
          • 1970-01-01
          • 1970-01-01
          • 2018-10-06
          • 2018-08-06
          • 1970-01-01
          • 1970-01-01
          • 2019-12-12
          相关资源
          最近更新 更多