【问题标题】:Delay Element in RxJava FlowableRxJava Flowable 中的延迟元素
【发布时间】:2020-07-30 02:43:11
【问题描述】:

@ProjectReactor 发布者 Flux 中有一个名为 delayElements 的非常直观的运算符,用于在发射的每个元素之间引入延迟。比如说,下面的 cod 每秒发出一个元素。

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 中执行上述操作的更好方法吗?

【问题讨论】:

    标签: rx-java project-reactor rx-java3


    【解决方案1】:

    我发现了一个相当简单的方法here。谢谢Mina

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-03-25
      • 1970-01-01
      • 2018-09-03
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多