我希望从可观察列表中发出的每个项目之间的自定义延迟作为项目本身的函数.假设我们有一个列表(项目,延迟):
[("item1", 2),("item2", 1),("item3", 2),("item4", 3),("item5", 2),("item6", 3)]
Run Code Online (Sandbox Code Playgroud)
我希望输出类似于:
0 seconds:
1 seconds:
item1
2 seconds:
item2
3 seconds:
4 seconds:
item3
5 seconds:
6 seconds:
7 seconds:
item4
8 seconds:
9 seconds:
item5
10 seconds:
11 seconds:
12 seconds:
item6
Completed!
13 seconds:
Run Code Online (Sandbox Code Playgroud)
我不知道如何通过延迟/计时器操作员来最好地完成此操作.通过延迟文档,但无法找到一个简单的方法.任何指针都会有所帮助.谢谢!
Joh*_*wUs 14
不需要任何花哨的东西.只需使用concatMap和delay运营商
jla.concatMap(s -> Observable.just(s).delay(s.delay, TimeUnit.SECONDS))
.subscribe(s1 -> System.out.println(s1.name + " just came..."),
e -> {},
() -> System.out.println("Everybody came!"));
Run Code Online (Sandbox Code Playgroud)
您可以尝试使用 .delay() http://reactivex.io/RxJava/javadoc/rx/Observable.html#delay(rx.functions.Func1) 的这种覆盖
似乎正是您所需要的
代码类似于:
yourObservable.delay((item) -> Observable.timer(item.getDelay(), TimeUnit.SECONDS))
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4484 次 |
| 最近记录: |