Запускать несколько задач последовательно после ответа эмиттера - PullRequest
1 голос
/ 24 июня 2019

Я пытаюсь создать контроллер связи для аппаратного устройства, которое всегда отвечает с некоторой задержкой. Если бы я запрашивал только одно значение, я мог бы создать Single<ByteArray> и сделать окончательное преобразование в .subscribe{ ...}.

Но когда я запрашиваю более одного значения, мне нужно убедиться, что второй запрос происходит после , когда первый запрос был полностью закрыт.

Это то, что я могу сделать с RxJava, например Перенести ? Или я должен создать очередь самостоятельно и обработать последовательность событий вручную с моей очередью?

Мы все равно используем RxJava (и я, очевидно, новичок в этом), и, конечно, было бы неплохо использовать его и для этой цели. Но это хороший вариант использования?

Edit:

Код, который я мог бы использовать, но он не был бы достаточно универсальным:

hardware.write(byteArray)
    .subscribe(
        {
            hardware.receiveResult().take(1)
                .doFinally { /* dispose code */ }
                .subscribe(
                    { /* onSuccess */ }
                    { /* onError */ }
                .let { disposable = it }
        },
        { /* onError */ }
    )    

Весь код для следующего запроса в очереди может быть помещен во внутренний onSuccess, а затем следующий в этом onSuccess. Это будет выполняться последовательно, но это не будет достаточно общим. Любой другой класс, который делает запрос, испортит мою последовательность.

Я ищу решение, которое автоматически создает очередь в классе аппаратного контроллера связи.

...