Я видел множество сообщений о том, что Rx
задерживает каждую передачу события: Как сделать таймер обратного отсчета с помощью RxJS Observables? , Как использовать RxJava Interval Operator Operator, Добавление задержки между наблюдаемыми объектами RxJava , RxJava задержка для каждого отправляемого элемента списка и других.
Впрочем, я не видел ни одного для цепочки с разными задержками.
По сути, у меня есть Textview и список писем, и я бы хотел:
- установить текст на первую букву
- подождите 1500 мс
- установить текст на ноль
- подождите 500 мс
- установить текст для второй буквы
- подождите 1500 мс
- установить текст на ноль
- подождите 500 мс
- повторить для всего списка
Реализация кода может выглядеть примерно так (но я думаю, doThing()
- это нонсенс в Rx
, а delay()
не предназначен для этого):
Observable.fromArray(new String[]{"A", "B", "C", "D", "E"})
.subscribeOn(Schedulers.newThread())
.observeOn(AndroidSchedulers.mainThread())
.delay(500L, TimeUnit.MILLISECONDS)
.doThing((String i) -> {
textView.setText("");
Log.d("XXX", "MainActivity :: onCreate (110): letter="+ i);
})
.delay(1500L, TimeUnit.MILLISECONDS)
.doThing((String i) -> {
textView.setText(i);
Log.d("XXX", "MainActivity :: onCreate (110): letter="+ i);
});
Как мне добиться этого с помощью Rx?
РЕДАКТИРОВАТЬ: Я мог бы использовать ответ от rxjava delay: Как получить переменную задержку для каждого элемента, генерируемого из списка? со списком букв, где одна буква на двоих является особенной (может быть, ноль?) , но это кажется слишком сложным.