我如何使用 RX 应用宽限时间?

How can I apply a grace time using RX?

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

如果你切换地图(一个平面地图,当第二个项目从源发出时,对原始可观察对象的订阅被取消订阅并且订阅移动到下一个)你可以这样做:

  1. booleanObservable
  2. .switchMap(将 true 映射到一个 2 秒的可观察计时器,将 false 映射到一个空的可观察对象)
  3. .onNext 显示您的消息(下一个不会触发空和 快速响应会切断 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()