Надеюсь, мой вопрос достаточно ясен.
Допустим, у вас есть API, который выполняет запросы по сети, поддерживаемой IO-потоками (ввод и вывод).
Используя RxJava (с которой я дебютирую), я думаю, что можно сделать следующее:
public Single<MyData> getMyDataFromApi() {
return requestMyData()
.map/flat/then()->waitAndprocessData() // here is the missing link for me. What can I use ?
.andThen()->returnData()
Как вы поймете, метод requestMyData
возвращает Completable
, который несет исключительную ответственность и выполняет только одну задачу - выполнить указанный запрос (операция типа IO).
Затем, после выполнения запроса, удаленный объект должен обработать его и вернуть результат запрошенному объекту MyData
, выполнив также операцию типа IO.
Ключевым моментом здесь является то, что я работаю с потоками (входными и выходными), операции чтения и записи которых, очевидно, выполняются в отдельных потоках ввода-вывода (с использованием Schedulers.io()
).
Итак, в конце концов, есть ли способ, чтобы мой getMyDataFromApi()
метод делал следующее:
- Выполнить запрос -> это
completable
- Ждать результата -> что-то вроде подписки? но без расщепления цепи
- Обработка результата -> это
single
или может быть лямбадой в map
методе
- Вернуть результат -> последний элемент, очевидно,
single
В заключение я твердо верю, что подпись requestMyData
должна быть подписью Single
, потому что она является геттером, и я ожидаю результата или ошибки.