2017-10-13 62 views
1

我有一个Observable<Bool>,当操作开始时发出true,当它结束时发出false。我希望在操作正在进行时显示一条消息,但只有在开始时间超过两秒时才会显示。有没有一种方法可以创建一个可以将我的消息绑定到的观察值?任何帮助非常感谢!如何使用RX应用宽限期?

回答

2

如果switchMap(其中当第二个项目是从源头上订阅的原始观察到的是取消订阅和订阅移动到下一个发出的flatMap),你可以做这样的事情:

  1. booleanObservable
  2. .switchMap(图真为2秒的计时器观察到,地图假为空观察到的)
  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()