如何在RxSwift中设置延迟?

时间:2019-11-04 10:26:13

标签: delay rx-swift

我有一个Observable可以执行一些任务,我希望它能在5秒后给我结果,但是它会在此之前,有时在5秒后给我结果,具体取决于复杂程度。

例如:

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

我该如何实现?我听说过防抖和节流阀。

2 个答案:

答案 0 :(得分:6)

如果您希望延迟Observable发出值,则可以执行以下操作:

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

答案 1 :(得分:2)

您可以将Observable.zipObservable<MyType>.zip( myObservable, Observable<Int>.timer(RxTimeInterval.seconds(5), scheduler: MainScheduler.instance), resultSelector: { myItem, _ in return myItem } ) 一起使用。

类似的东西:

data:any[]=[]
  getData(data:any[],index,nodes)
  {
    nodes.forEach(x=>{
      x.level=index
      data.push(x)
      if (x.children && x.open)
        this.getData(data,index+1,x.children)
    })
    return data;
  }

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