Я использую RxJava в своем приложении для Android и Модернизацию для создания сетевых запросов на сервер. Я использую RxJavaCallAdapterFactory, поэтому я могу вернуть мои запросы на переоснащение. В моем коде модифицированный объект называется «api».Chaining Singles вместе в RxJava
Код здесь отлично работает, но в этом примере мне нужно получить userId, прежде чем я смогу создать плейлист. Я плоскую карту запроса userId для запроса API, и после создания списка воспроизведения мне нужно снова использовать плоскую карту, чтобы преобразовать ответ JSON в полезный объект.
public JSONUser me;
public Single<String> getUserId(){
if(me != null){
return Single.just(me.getUserId());
}
return api.getMe().flatMap(new Func1<JSONUser, Single<String>>() {
@Override
public Single<String> call(JSONUser meResult) {
me = meResult;
return Single.just(me.getUserId());
}
});
}
public Single<Playlist> createPlaylist(String name) {
final NewPlaylistConfig config = new NewPlaylistConfig(name);
return getUserId().flatMap(new Func1<String, Single<Playlist>>() {
@Override
public Single<Playlist> call(String userId) {
return api.createPlaylist(userId, config).flatMap(
new Func1<JSONPlaylist, Single<? extends SpotifyPlaylist>>() {
@Override
public Single<? extends Playlist> call(JSONPlaylist data) {
return Single.just(new Playlist(data));
}
});
}
});
}
Точка входа здесь будет createPlaylist(). NewPlaylistConfig будет преобразован в JSON и является просто параметром body для запроса POST. UserId необходим как параметр пути.
Мой главный вопрос здесь, есть ли способ связать эти операции без «обратного вызова», который вы видите здесь. Как я уже сказал, этот код работает, но он действительно уродлив. Я был бы признателен, если бы кто-нибудь мог указать мне в правильном направлении относительно этого. Есть ли способ сделать эту работу подобными обещаниям, где вы можете просто цепочки?
спасибо.
ли это stackoverflow.com/questions/30269011/chain-two-retrofit-observables-w-rxjava помощь ? – Raghunandan