Я пытаюсь создать контроллер связи для аппаратного устройства, которое всегда отвечает с некоторой задержкой. Если бы я запрашивал только одно значение, я мог бы создать 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
. Это будет выполняться последовательно, но это не будет достаточно общим. Любой другой класс, который делает запрос, испортит мою последовательность.
Я ищу решение, которое автоматически создает очередь в классе аппаратного контроллера связи.