所以情况是这样的。假设在某个地方我正在填写一个集合。每次添加元素时,IObservable都会为其订阅者调用OnNext。
现在,将有一个集合将被填充的点。(我正在读一些东西,我读完了……不管怎样)。此时,将对订阅者调用OnComplete()。
但是,用户不会观察到这种方法。他宁愿调用一个等待的异步方法。。。他不太在乎他读的东西,他只在乎他读完了。
因此,基本上,我希望从IObservable中获得一个Task,该Task在IObservble向其订阅者调用OnComplete()时返回。我特别希望用户不要使用观察者,而只是乐于知道在他的等待呼叫之后发生的一切都将在集合填充之后发生。
也许ToTask()方法起到了作用?我真的看不出文件。
如果使用Rx 2.0或更高版本,则可以await
IObservable
返回可观察项中的最后一项。即在可观察到的事物完成之后。
var lastItem = await myObservable;
这是可能的,因为在Rx 2.0中,在IObservable
上添加了GetAwaiter
扩展方法,使await
的可观察性成为可能。还有一些方便的扩展方法,允许您指定要等待的元素。
这里有一个很好的博客。