有一个异步发出项目的源,在我的例子中,在几秒钟内大约有 10 个项目。
- 我想处理所有这些。
- 按出场顺序
- 一次一个
- 处理每个可能需要很长时间(如 1-5 秒)
- 处理中可能有新项目
目前我正在将 Java 应用程序移植到 C#。在 RxJava 世界里有onBackpressureBuffer
方法,而在 Rx.Net 里有很多不同的方法,无法找出等价物。
我想我可以使用Buffer()
零延迟并使用生成的可枚举,但似乎很hacky。
编辑:请在投反对票之前阅读评论
有一个异步发出项目的源,在我的例子中,在几秒钟内大约有 10 个项目。
目前我正在将 Java 应用程序移植到 C#。在 RxJava 世界里有onBackpressureBuffer
方法,而在 Rx.Net 里有很多不同的方法,无法找出等价物。
我想我可以使用Buffer()
零延迟并使用生成的可枚举,但似乎很hacky。
编辑:请在投反对票之前阅读评论
Rx.NET 不支持背压,也不能像 RxJava 那样:必须设计协议,以便在生产者和消费者之间有一个请求通道。从概念上讲,Async Enumerables 可以以 1-by-1 项目交付的形式为您提供背压(在某些情况下称为异步拉取、每个项目的承诺、延续等)。
有一个 C# 库与 RxJavaFlowable
类型的特性匹配得比较好(但不是 100%):Reactive4.NET,如果需要,它也可以IObservable
与 Rx.NET 互操作。