-1

有一个异步发出项目的源,在我的例子中,在几秒钟内大约有 10 个项目。

  • 我想处理所有这些。
  • 按出场顺序
  • 一次一个
  • 处理每个可能需要很长时间(如 1-5 秒)
  • 处理中可能有新项目

目前我正在将 Java 应用程序移植到 C#。在 RxJava 世界里有onBackpressureBuffer方法,而在 Rx.Net 里有很多不同的方法,无法找出等价物。

我想我可以使用Buffer()零延迟并使用生成的可枚举,但似乎很hacky。

编辑:请在投反对票之前阅读评论

4

1 回答 1

3

Rx.NET 不支持背压,也不能像 RxJava 那样:必须设计协议,以便在生产者和消费者之间有一个请求通道。从概念上讲,Async Enumerables 可以以 1-by-1 项目交付的形式为您提供背压(在某些情况下称为异步拉取、每个项目的承诺、延续等)。

有一个 C# 库与 RxJavaFlowable类型的特性匹配得比较好(但不是 100%):Reactive4.NET,如果需要,它也可以IObservable与 Rx.NET 互操作。

于 2018-02-08T00:49:32.980 回答