【问题标题】:RxJava: Observable that delays items until another observable has emitted?RxJava:Observable 延迟项目直到另一个 observable 发出?
【发布时间】:2021-11-06 20:33:17
【问题描述】:

我想延迟一个 observable 的发射,直到它接收到另一个 observable 的信号。

content: 1-2-3-4-5-6-7-8
green:   ---G-----------
expect:  ---1234-5-6-7-8 

这是我的 hacky 解决方案:

    Observable.combineLatest(
      contentStream,
      greenLight, // Only emits 1 item when the time is right
      toPair(),
    )
        .map { it.first } // Prettify output as signal is not needed

有没有更优雅的解决方案来实现这一点?

【问题讨论】:

    标签: kotlin rx-java


    【解决方案1】:

    您可以使用concatArrayEagerPublishSubject 作为第一个来源,因此当您onComplete 它时,操作员将切换到它一直在运行的第二个来源并中继过去和未来的项目。

    PublishSubject<ContentType> subject = PublishSubject.create();
    Observable<ContentType> source = ...
    
    Observable.concatArrayEager(subject, source)
    ...
    
    // later
    subject.onComplete();
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-04-02
      • 2021-06-30
      相关资源
      最近更新 更多