如何在返回具有延迟的值时重复方法

时间:2013-12-10 21:09:54

标签: system.reactive

假设我有这个observable,它每秒调用一次RefreshMedias,即使它内部的方法还没有完成运行:

Observable.Interval(TimeSpan.FromSeconds(1))
    .Subscribe(_ => PhotoSourcesService.RefreshMedias())
    .DisposeWith(Disposables);

如何调用RefreshMedias等待操作完成,何时完成延迟5秒并无限期再次调用RefreshMedias?

1 个答案:

答案 0 :(得分:4)

假设RefreshMedias()同步运行并返回void,那么:

Observable.Defer(() => Observable.Start(() => PhotoSourcesService.RefreshMedias()))
          .Concat(Observable.Empty<Unit>().Delay(TimeSpan.FromSeconds(5)))
          .Repeat()
          .DisposeWith(Disposables);

应该有用。