android - RxJava如何创建一个以不同延迟执行多个作业的间隔?
问题描述
我对 RxJava 很陌生,所以我的问题可能完全是愚蠢的,但我不知道该怎么做。
所以我有N个实现以下接口的工作
interface Worker {
int interval();
void job();
}
我想要实现的是一个类似计时器的功能,每次经过一段时间后都会调用这些Worker
s函数。job()
interval()
到目前为止我尝试过的
Observable.fromArray(worker1, worker2)
.flatMap(worker -> Observable.just(worker).delay(worker.delay(), TimeUnit.SECONDS))
.subscribe(Worker::job);
这工作正常,在给定时间过去后,作业是异步执行的。
但这只执行了一次。我知道我需要以interval()
某种方式使用操作员,但无法理解它。
提前致谢
解决方案
如果我正确理解你的问题,你需要做这样的事情:
Observable.fromArray(worker1, worker2)
.flatMap { worker ->
Observable.interval(worker.interval(), TimeUnit.SECONDS)
.flatMap { Observable.just(worker).delay(worker.delay(), TimeUnit.SECONDS) }
}
.subscribe(Worker::job)
您应该注意到,在此实现中,您的worker.job()
调用将以意外的顺序进行
推荐阅读
- sql - 在 SQL Server v12 中使用备份到 URL 时覆盖 blob 文件
- c# - 获取类的“所有者”,如果它是另一个类的属性
- ffmpeg - MP4 容器中的 H.264 编码流在 WMP12 Windows 7 中无法正常播放
- c# - 登录另一个进程
- apache-kafka-connect - Kafka 连接 CockroachDB
- delphi - ComboBox.Sorted 发生了什么:= True; 在德尔福 10.2 中?
- python - 装饰器函数语法python
- php - Wordpress - 作者简介中带有 Ajax 分页的用户列表
- synchronization - 如何从 Azure 文件同步检查文件是否已完全上传到 azure 文件共享中
- json - 使用类型值验证 json