2017-08-08 206 views
1

我正在使用Retrofit和RxAndroid。現在我想調用api來獲取用戶信息,然後使用這些信息作爲參數來調用另一個API來獲取更多信息。 我該怎麼做才能達到這個目的?RXAndroid:可觀察等待另一個可觀察的完成

P/S:它可以回調做,但我想與RX-Android的風格

回答

3

您可以使用flatMap該做的事。

僞代碼:

apiService.getUser() 
    .flatMap(user -> apiService.getUserMessages(user.getId())) 
    .subscribe(messages -> { 

    }, error -> { 

    }); 
+0

它工作。非常感謝你 –

0

你可以做這樣的事情:

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 
        } 
       }); 

下面的代碼會做的動作在一個新的線程,並且會打回調主線程。

0

如果你想遞歸,你應該使用concatMap()。此方法將確保您按指定的順序進行多個呼叫。 flatMap()更隨機。

您可以檢查有關此link的更多信息。

相關問題