bartwell
@bartwell

Как реализовать очередь запросов с помощью Rx?

В моем приложении есть асинхронный метод 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() {
    // Здесь обрабатывается завершений запроса
}


При таком коде запросы выполняются параллельно. Что нужно добавить, чтобы запросы последовательно один за другим?
  • Вопрос задан
  • 271 просмотр
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы