Alw*_*wyn 1 c# multithreading asynchronous reactive-programming system.reactive
给定一个同步观察者,有没有办法做到这一点:
observable.SubscribeAsync(observer);
Run Code Online (Sandbox Code Playgroud)
并且observer异步调用所有方法或者是在创建观察者时必须处理的内容吗?
rei*_*erh 12
如果您需要在流中吐出新值时调用异步方法,那么您将找到最常用的解决方案SelectMany.问题是,这不会等待方法完成,导致创建的任何任务SelectMany并行运行.
如果要在等待异步函数完成时阻塞流,则需要以下内容:
Observable.Interval(TimeSpan.FromSeconds(1))
.Select(l => Observable.FromAsync(asyncMethod))
.Concat()
.Subscribe();
Run Code Online (Sandbox Code Playgroud)
要么:
Observable.Interval(TimeSpan.FromSeconds(1))
.Select(_ => Observable.Defer(() => asyncMethod().ToObservable()))
.Concat()
.Subscribe();
Run Code Online (Sandbox Code Playgroud)