【问题标题】:RxJS/Rx.Net Observable-subscribe vs events - Performance/Threads [closed]RxJS/Rx.Net Observable-subscribe 与事件 - 性能/线程 [关闭]
【发布时间】:2017-07-15 06:42:00
【问题描述】:

我最近开始研究响应式扩展,主要是使用 Angular 2 在客户端的可观察对象。Rx 的可观察对象的概念和 dotnet 的事件似乎非常相似。有没有一个适用而另一个不适用的具体例子。如果不是,那么微软引入 Rx.Net 是否还有其他原因,因为 observables 是 Reactive Extensions 的核心。任何链接或实时示例就足够了。它在异步/等待、任务或线程方面有更好的工作吗?我正在寻找线程/性能方面的差异。

【问题讨论】:

  • stream-of-signals 可以被认为是对函数的多次调用,Rx 和 async-await 之间的核心区别是有状态的——尼斯。每个 Rx 操作员都可以保留一些状态,并且每次调用的行为都不同。异步等待功能不是。您需要将状态存储在其他地方以模拟 Rx 运算符,但与 Rx 的情况不同,它不能封装到函数本身中。

标签: .net async-await rxjs angular2-observables rx.net


【解决方案1】:

它们是不同的抽象。此答案中的所有内容都同样适用于 JavaScript 和 C#。

async/await 允许您异步等待单个异步操作。这种“异步操作”只能完成一次,只有一个结果。

Observables 允许您订阅数据流,并对到达该流的数据做出反应。这种订阅模式允许随着时间的推移获得多项数据。

【讨论】:

  • 感谢您帮助我了解其中的区别。但我仍然觉得,无论 observables 是做什么的,已经有一些结构可以促进这些功能。比如说 Observable.subscribe 和事件处理程序做同样的事情。我在这里遗漏了什么还是我也完全错了?
  • @Sreenath:一点也不。 Rx 在早期通常被称为“LINQ over events”。然而,Rx 远优于事件;它具有更加一致和灵活的用法。我认为 observable 本质上是事件的替代品。如果它们是在今天设计而不是复制几十年前的设计,它们就是事件的样子。
  • 发现了一些与上述答案齐头并进的链接,并提供了示例。添加它们以供任何访问此的人参考 - docs.microsoft.com/en-us/previous-versions/dotnet/… & markheath.net/post/reactive-extensions-observables-versus
猜你喜欢
  • 2017-03-03
  • 1970-01-01
  • 1970-01-01
  • 2013-10-16
  • 1970-01-01
  • 2020-10-06
  • 1970-01-01
  • 1970-01-01
  • 2014-06-27
相关资源
最近更新 更多