当一个方法返回一个具有延迟的值时,如何重复该方法



假设我有一个可观察的,它每秒调用RefreshMedias,即使其中的方法还没有完成运行:

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

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

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

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

应该起作用。

相关内容

  • 没有找到相关文章

最新更新