如何在 RxSwift 中延迟?

How to put delay in RxSwift?

我有一个 Observable 来执行某些任务,我希望它在 5 秒后给我结果,但它在此之前,有时在 5 秒后给我结果,具体取决于复杂性。

例如:

如果我的代码在 2 秒内完成了任务并且即将发出计算值。我希望它再等待 3 秒,然后发出计算值。

我怎样才能做到这一点?我听说过 debounce 和 throttle。

您可以将 Observable.timerObservable.zip 一起使用。

类似于:

Observable<MyType>.zip(
    myObservable, 
    Observable<Int>.timer(RxTimeInterval.seconds(5), scheduler: MainScheduler.instance),
    resultSelector: { myItem, _ in return myItem }
)

结果选择器将忽略计时器产生的值。

如果你想延迟你的 Observable 发出一个值,你可以简单地做这样的事情:

Observable.just(()).delay(.seconds(2), scheduler: MainScheduler.instance)