在我不断追求减少吸吮的追求中,我试图了解Rx.net的FirstAsync()语法。大多数文档适用于已弃用的First()如果我理解正确,则它使我可以在流中的第一个元素到达后​​立即启动流。

假设我有一个myStream流,我想开始一个流,该流接受第一个元素,并基于该元素开始一个流。就我而言,这将是一连串的。
我希望它能够做到这一点:

--- 1-2->
--- A --->

我将如何处理?

myStream.FirstAsync().Return(() => return "A"); // doesn't compile

最佳答案

我不知道为什么其他两个答案都说.FirstAsync()返回Task(或者您应该调用.Result)。它不返回Task,而是返回IObservable<TSource>。可观察的对象是可以等待的,但不是任务。

要实现所需的功能,请执行以下操作:myStream.FirstAsync().Select(_ => "A")

您也可以执行myStream.Take(1).Select(_ => "A")。此版本与FirstAsync版本之间的区别在于,如果FirstAsync在没有任何元素的情况下完成,则myStream版本将引发异常。 Take(1)将完成且没有错误。

10-07 15:45