相当于Rx.Net中的.onBackpressureBuffer()?

时间:2018-01-22 10:31:46

标签: c# system.reactive rx.net

有一个源以异步方式发出项目,在我的情况下以10个项目的顺序发出几秒钟。

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

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

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

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

1 个答案:

答案 0 :(得分:1)

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

有一个C#库与RxJava Flowable类型的功能相对匹配(但不是100%):Reactive4.NET,它们也可以与IObservable互操作,因此与Rx互操作。 NET,如果需要的话。