В моем приложении есть асинхронный метод makeRequest() с колбэком. Этот метод вызывается много раз из разных классов. Нужно, чтобы выполнение содержимого этого метода происходило последовательно (пока выполняется первый запрос - остальные ждут).
Хочется реализовать это средствами Rx. По моему представлению, это должно выглядеть примерно так:
public void execute() { // Этот метод вызывается многократно из разных классов
Observable.just(true)
// Что здесь нужно добавить для ожидания?
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.map(o -> {
internalExecute();
return o;
})
.subscribe();
}
private void internalExecute() { // Этот метод должен запускаться, только когда предыдущий запуск финишировал
makeRequest(this::onRequestFinished);
}
private void onRequestFinished() {
// Здесь обрабатывается завершений запроса
}
При таком коде запросы выполняются параллельно. Что нужно добавить, чтобы запросы последовательно один за другим?