假设我有这个observable,它每秒调用一次RefreshMedias,即使它内部的方法还没有完成运行:
Observable.Interval(TimeSpan.FromSeconds(1))
.Subscribe(_ => PhotoSourcesService.RefreshMedias())
.DisposeWith(Disposables);
如何调用RefreshMedias等待操作完成,何时完成延迟5秒并无限期再次调用RefreshMedias?
答案 0 :(得分:4)
假设RefreshMedias()
同步运行并返回void
,那么:
Observable.Defer(() => Observable.Start(() => PhotoSourcesService.RefreshMedias()))
.Concat(Observable.Empty<Unit>().Delay(TimeSpan.FromSeconds(5)))
.Repeat()
.DisposeWith(Disposables);
应该有用。