【发布时间】:2015-10-22 21:38:34
【问题描述】:
我正在努力实现一些我认为在 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]
我做错了什么?
【问题讨论】:
-
想知道为什么没有任何答案实际上回答了这个问题。为什么这不起作用,有什么问题?
-
“我正在努力实现一些我认为在 Rx 中相当简单的东西” 似乎是对每个 Rx 问题的介绍。 :)