rx-java - RxJava:在数组的迭代之间使用计时器
问题描述
我正在尝试使用 RxJava 进行迭代和数字数组,其中每个数字代表我想在执行下一次发射之前执行的超时。
这就是我想出的..
AtomicInteger index = new AtomicInteger(0);
Long[] intervals = {1L,2L,3L,4L};
Observable.fromArray(intervals)
.zipWith(Observable.interval(intervals[index.getAndIncrement()], TimeUnit.SECONDS), (a,b) -> a)
.subscribe(event -> {
System.out.println(LocalDateTime.now());
});
这段代码中的问题是,它Observable.interval
采用数组中的第一个索引,但忽略了,getAndIncrement()
所以我只得到 1 秒的超时。
任何想法如何使这项工作?
解决方案
试试这个:
Long[] intervals = {1L, 2L, 3L, 4L};
Flowable.fromArray(intervals)
.flatMap(interval -> Flowable.timer(interval, TimeUnit.SECONDS)
.map(w -> interval), 1)
.subscribe(event -> {
System.out.println(LocalDateTime.now());
})
推荐阅读
- swift - 以编程方式在不同 Storyboard 文件中的视图之间进行 Segue
- python - 比较模板django中的字典
- swift - 文本字段在 segue 后永久位于第二个视图控制器中
- android - 更改图像资源
- r - 使用 R 包“nloptr”最大化非线性约束问题
- typescript - “K extends keyof T”与直接使用“keyof T”的区别?
- javascript - Ember 不显示外键字段数据
- unity3d - 更改 Physics.defaultContactOffset 是否会对性能产生重要影响?
- excel - 基于滚动条的 Excel Slicer
- awk - 如何使用 awk 连接两个文件?