RxJava delay for each item of list emitted <p>I'm struggling to implement something I assumed would be fairly simple in Rx.</p> <p>I have a list of items, and I want to have each item emitted with a delay.</p> <p>It seems the Rx delay() operator just shifts the emission of all items by the specified delay, not each individual item.</p> <p>Here's some testing code. It groups items in a list. Each group should then have a delay applied before being emitted.</p> <pre><code> Observable.range(1, 5) .groupBy(n -&gt; n % 5) .flatMap(g -&gt; g.toList()) .delay(50, TimeUnit.MILLISECONDS) .doOnNext(item -&gt; { System.out.println(System.currentTimeMillis() - timeNow); System.out.println(item); System.out.println(" "); }).toList().toBlocking().first(); </code></pre> <p>The result is:</p> <pre><code>154ms [5] 155ms [2] 155ms [1] 155ms [3] 155ms [4] </code></pre> <p>But what I would expect to see is something like this:</p> <pre><code>174ms [5] 230ms [2] 285ms [1] 345ms [3] 399ms [4] </code></pre> <p>What am I doing wrong?</p>