我在使用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]
我做错了什么?