【问题标题】:How can I apply a grace time using RX?如何使用 RX 应用宽限时间?
【发布时间】:2017-10-13 11:14:18
【问题描述】:

我有一个Observable<Bool>,它在操作开始时发出true,在操作结束时发出false。我想在操作进行时显示一条消息,但前提是它需要超过两秒钟才能开始。有没有办法可以创建一个可以将消息绑定到的可观察对象?非常感谢任何帮助!

【问题讨论】:

    标签: swift rx-swift


    【解决方案1】:

    如果你 switchMap(一个 flatMap,当从源发出第二个项目时,对原始 observable 的订阅被取消订阅并且订阅移动到下一个)你可以这样做:

    1. booleanObservable
    2. .switchMap(将 true 映射到 2 秒的 observable 计时器,将 false 映射到空 observable)
    3. .onNext 显示您的消息(next 不会为空的和 快速响应会切断 2 秒计时器)。

    注意 switchMap 在 RxSwift 中是 'switchLatest'。

    可能变成这样:

    booleanObservable
        .map { inProgress -> Observable<Bool> in
            if inProgress {
                return Observable.just(true).delay(time: 2)
            } else {
                return Observable.just(false)
            }
         }
        .switchLatest()
    

    【讨论】:

      猜你喜欢
      • 2011-03-13
      • 1970-01-01
      • 2022-06-15
      • 2012-12-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-09-28
      相关资源
      最近更新 更多