给定一个同步观察者,有没有办法做到这一点:
observable.SubscribeAsync(observer);
observer
上的所有方法都是异步调用的,还是我在创建观察者时必须处理的事情?
最佳答案
如果您需要在流吐出新值时调用异步方法,您会发现最常见的解决方案是使用 SelectMany
。问题是这不会等待方法完成,导致 SelectMany
创建的任何任务并行运行。
如果您想在等待异步函数完成时阻止流,则需要以下内容:
Observable.Interval(TimeSpan.FromSeconds(1))
.Select(l => Observable.FromAsync(asyncMethod))
.Concat()
.Subscribe();
或者:
Observable.Interval(TimeSpan.FromSeconds(1))
.Select(_ => Observable.Defer(() => asyncMethod().ToObservable()))
.Concat()
.Subscribe();
关于c# - 有没有办法将观察者订阅为异步,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18814805/