Элемент задержки в RxJava Flowable

В издателе Flux @ProjectReactor есть очень интуитивно понятный оператор delayElements, который вводит задержку между каждым испускаемым элементом. Скажем, например, следующая треска испускает элемент в секунду.

Flux.fromIterable(List.of(1, 2, 3))
      .delayElements(Duration.ofSeconds(1))
      .map(i -> i * 2)
      .doOnNext(r -> System.out.println(ZonedDateTime.now().toEpochSecond() + ": " + r))
      .blockLast();

Чтобы добиться того же поведения в @Rxjava, мне пришлось провести некоторую церемонию.

final List<Integer> data = List.of(1, 2, 3);    
Flowable.interval(1, TimeUnit.SECONDS)
      .take(data.size())
      .map(i -> data.get(i.intValue()) * 2)
      .doOnNext(r -> System.out.println(ZonedDateTime.now().toEpochSecond() + ": " + r))
      .blockingLast();

Кто-нибудь знает, как лучше сделать это в @Rxjava?


person Sanju Thomas    schedule 25.07.2020    source источник


Ответы (1)


Я нашел довольно простой подход здесь. Спасибо, Мина.

Flowable.just(1,2,3)
  .zipWith(Flowable.interval(1, TimeUnit.SECONDS), (item, interval) -> item)
  .subscribe(r -> System.out.println(r));
person Sanju Thomas    schedule 29.07.2020