如何在RxSwift中添加延迟?

6

我有一个Observable用于执行某个任务,我希望它在5秒钟后给我结果,但它会在这之前或之后(根据复杂度)给我结果。

例如:

如果我的代码在2秒钟内完成了任务并即将发射计算出的值。我想让它等待另外3秒,然后再发射计算出的值。

我该怎么做呢? 我听说过防抖动和节流。

2个回答

31

如果你想要延迟你的 Observable 发射值,你可以像这样做:

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

我无法在RxTimeInterval中找到.seconds(2)方法,你知道新版本中有哪些更改吗? - Daksh Gargas
".seconds方法应该在DispatchTimeInterval上" - evya

8
你可以使用 Observable.timer 结合 Observable.zip。例如:
Observable<MyType>.zip(
    myObservable, 
    Observable<Int>.timer(RxTimeInterval.seconds(5), scheduler: MainScheduler.instance),
    resultSelector: { myItem, _ in return myItem }
)

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接