我如何使用 RX 应用宽限时间?
How can I apply a grace time using RX?
我有一个 Observable<Bool>
,它在操作开始时发出 true
,在操作结束时发出 false
。我想在操作进行时显示一条消息,但前提是开始时间超过两秒。有没有一种方法可以创建一个可以将消息绑定到的可观察对象?非常感谢任何帮助!
如果你切换地图(一个平面地图,当第二个项目从源发出时,对原始可观察对象的订阅被取消订阅并且订阅移动到下一个)你可以这样做:
- booleanObservable
- .switchMap(将 true 映射到一个 2 秒的可观察计时器,将 false 映射到一个空的可观察对象)
- .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()
我有一个 Observable<Bool>
,它在操作开始时发出 true
,在操作结束时发出 false
。我想在操作进行时显示一条消息,但前提是开始时间超过两秒。有没有一种方法可以创建一个可以将消息绑定到的可观察对象?非常感谢任何帮助!
如果你切换地图(一个平面地图,当第二个项目从源发出时,对原始可观察对象的订阅被取消订阅并且订阅移动到下一个)你可以这样做:
- booleanObservable
- .switchMap(将 true 映射到一个 2 秒的可观察计时器,将 false 映射到一个空的可观察对象)
- .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()