San*_*ibe 3 reactive-programming task-parallel-library system.reactive observable
所以情况就是这样.假设某个地方我正在填写一个集合.每次添加元素时,IObservable都会为其订阅者调用OnNext.
现在,将有一个点将填充集合.(我正在读一些东西,我读完了......无论如何).此时,在订阅者上调用OnComplete().
但是,用户不会遵守此方法.他宁愿打电话给他等待的异步方法......他并不关心他读的东西,他只关心他读完了.
基本上,我想从IObservable中获取一个Task,它在IObservable调用OnComplete()时返回给它的订阅者.我特别希望用户不要使用观察者,但只是要知道在他的等待调用之后发生的任何事情都会在收集完成后发生.
也许ToTask()方法可以解决问题?我无法通过文档说出来.
如果您使用的是Rx 2.0或更高版本,则可以await IObservable返回observable中的最后一项.即在观察完成之后.
var lastItem = await myObservable;
Run Code Online (Sandbox Code Playgroud)
这是可能的,因为在Rx 2.0 中添加了一个GetAwaiter扩展方法,IObservable使得可以await观察到它.还有一些方便的扩展方法,允许您指定要等待的元素.
有一个关于它一个很好的博客在这里.