Я изо всех сил пытаюсь реализовать то, что, как я предполагал, будет довольно простым в Rx.
У меня есть список предметов, и я хочу, чтобы каждый предмет выдавался с задержкой.
Кажется, что оператор Rx delay() просто смещает излучение всех элементов на указанную задержку, а не каждого отдельного элемента.
Вот некоторый тестовый код. Он группирует элементы в списке. Каждая группа должна затем применить задержку перед отправкой.
Observable.range(1, 5)
.groupBy(n -> n % 5)
.flatMap(g -> g.toList())
.delay(50, TimeUnit.MILLISECONDS)
.doOnNext(item -> {
System.out.println(System.currentTimeMillis() - timeNow);
System.out.println(item);
System.out.println(" ");
}).toList().toBlocking().first();
Результат:
154ms
[5]
155ms
[2]
155ms
[1]
155ms
[3]
155ms
[4]
Но то, что я ожидал увидеть, выглядит примерно так:
174ms
[5]
230ms
[2]
285ms
[1]
345ms
[3]
399ms
[4]
Что я делаю неправильно?