0

我对 RxJava 很陌生,所以我的问题可能完全是愚蠢的,但我不知道该怎么做。

所以我有N个实现以下接口的工作

interface Worker {
  int interval();
  void job();
}

我想要实现的是一个类似计时器的功能,每次经过一段时间后都会调用这些Workers函数。job()interval()

到目前为止我尝试过的

Observable.fromArray(worker1, worker2)
                .flatMap(worker -> Observable.just(worker).delay(worker.delay(), TimeUnit.SECONDS))
                .subscribe(Worker::job);

这工作正常,在给定时间过去后,作业是异步执行的。

但这只执行了一次。我知道我需要以interval()某种方式使用操作员,但无法理解它。

提前致谢

4

1 回答 1

0

如果我正确理解你的问题,你需要做这样的事情:

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()调用将以意外的顺序进行

于 2020-11-13T08:02:13.600 回答