问题标签 [system.reactive]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c# - 如何使用 Rx 异步查询 Twitter 搜索?
我正在考虑使用 Rx(反应式框架)来异步查询给定关键字的 Twitter 搜索 API。我想构建的示例应用程序应该能够在控制台中显示新推文。
你认为有可能做到这一点吗?它会比使用标准编程技术更简单吗?
你会怎么做?
谢谢 !杰里米
.net - IObservable 是如何实现的.Average 应该有效吗?
更新
看起来 Jon Skeet 是对的(大惊喜!),问题在于我对Average
扩展提供连续平均值的假设(它没有)。
对于我所追求的行为,我编写了一个简单的ContinuousAverage
扩展方法,我在这里包括了它的实现,以便其他可能想要类似东西的人受益:
我正在考虑继续为其他明显的候选人做类似上述的事情——所以, ContinuousCount
, ContinuousSum
, ContinuousMin
, ContinuousMax
... 也许ContinuousVariance
还有ContinuousStandardDeviation
?对此有什么想法吗?
原始问题
我到处使用Rx Extensions ,感觉我已经掌握了基本的想法。
现在有些奇怪:我的印象是,如果我写了这个:
我会得到两个IObservable<double>
对象(bids
和avgOfBids
);一个基本上是来自 my 的所有市场出价流MarketDataProvider
,另一个是这些出价的平均值流。
所以是这样的:
看来我的avgOfBids
对象没有做任何事情。我错过了什么?我想我可能误解了Average
实际应该做什么。(这似乎也适用于所有类似聚合的扩展方法IObservable<T>
——例如Max
,、Count
等)
c# - 在不重新评估序列的情况下获取 IObservable 中的前一个元素
在一个IObservable
序列中(在 Reactive Extensions for .NET 中),我想获取先前和当前元素的值,以便我可以比较它们。我在网上找到了一个类似于下面的示例,它完成了任务:
它工作正常,除了它两次评估序列,我想避免。您可以看到使用以下代码对其进行了两次评估:
输出显示的调试行数是序列中元素数的两倍。
我理解为什么会发生这种情况,但到目前为止,我还没有找到不评估序列两次的替代方案。如何仅通过一个序列评估将先前和当前结合起来?
.net - 使用响应式扩展 (Rx) 创建 REST 客户端 API
我正在尝试了解反应式扩展 (Rx) 的正确用例。不断出现的示例是 UI 事件(拖放、绘图),以及 Rx 适用于异步应用程序/操作(如 Web 服务调用)的建议。
我正在开发一个需要为 REST 服务编写小型客户端 API 的应用程序。我需要调用四个 REST 端点,其中三个是为了获取一些参考数据(机场、航空公司和状态),第四个是主要服务,可为您提供给定机场的航班时间。
我创建了公开三个参考数据服务的类,方法如下所示:
在我的 GetFlights 方法中,我希望每个航班都保存一个参考,它是从机场出发的,以及运营该航班的航空公司。为此,我需要 GetAirports 和 GetAirlines 提供的数据。每个机场、航空公司和状态都将被添加到一个字典(即字典)中,以便我可以在解析每个航班时轻松设置参考。
我当前的实现现在看起来像这样:
当前的实现基于 Sergey 的回答,并使用 ForkJoin 来确保顺序执行,并且我引用的数据在航班之前被加载。这个实现比我之前的实现必须触发“ReferenceDataLoaded”事件更优雅。
.net - Rx 中的 IConnectableObservables
有人可以解释 Observable 和 ConnectableObservable 之间的区别吗?Rx Extensions 文档非常稀少,我不明白 ConnectableObservable 在什么情况下有用。
此类用于重播/修剪方法。
java - Reactive Extensions for Java
Is there any equivalent of Reactive Extensions (.NET) for Java?
About Rx (Reactive Extensions)
Rx is a library for composing asynchronous and event-based programs using observable collections.
I am aware of rule engines such as Drools from JBOSS, but is there some other way that is closer to the Microsoft .NET approach?
c# - Rx 的真实世界示例
可能重复:
反应式扩展使用的好例子
我已经玩了一段时间的响应式扩展,但主要限于在 WPF 前端处理/组合用户驱动的事件。
这是一种非常强大的异步编程新方法,我很好奇其他人在用它做什么,你认为它可以在哪里改进我们目前做事的方式?
.net - 我怎样才能得到一个 IObservable在来自“非标准”事件的 Rx 中?
这就是我的意思。假设我正在使用一个公开事件的 API,但这些事件不遵循标准EventHandler
或EventHandler<TEventArgs>
签名。一个事件可能如下所示,例如:
现在,通常,如果我想IObservable<TEventArgs>
从事件中获取一个,我可以这样做:
但这行不通,因为Update
事件不是EventHandler<UpdateEventArgs>
——事实上,没有——它UpdateEventArgs
基本上只是它自己的事情。
显然,我可以定义我自己的派生自EventArgs
(ie, UpdateEventArgs
) 的类,编写另一个类来包装提供Update
事件的对象,为包装类提供它自己的 Update
事件,即an EventHandler<UpdateEventArgs>
,并从中IObservable<UpdateEventArgs>
获取an。但这是令人讨厌的工作量。
有什么方法可以IObservable<[something]>
从这样的“非标准”事件中创建一个,还是我不走运?
更新:从乔恩斯基特的回答中,我被推向以下重载的方向Observable.FromEvent
:
不过,我不得不承认,我很难理解那Func(Of EventHandler(Of TEventArgs), TDelegate)
部分。这对我来说似乎倒退了(?)。显然,我只是缺少一些东西......
无论如何,如果它有帮助,我认为这就是等效的 C# 代码的样子(老实说:我不确定这一点。尽管我自己通常更喜欢 C#,但这段代码是一个人的工作我的同事,他们主要用 VB.NET 编写;而 VB.NET 允许使用多种语法来声明事件):
这里棘手的部分是,似乎某种派生类EventArgs
是必要的,无论如何。在我正在使用的 API 中,没有这样的类。所以,最起码,我得写一个。但这应该是相当微不足道的(基本上是一个属性:)BaseEvent
。
最后,我假设这个重载所需的代码在 C# 中看起来像这样:
首先:我有这个直吗?其次:我是否正确地说使用 VB 9,如果不编写自己的方法就真的无法完成上述任务吗?
我几乎觉得我一开始就从完全错误的角度来处理这个问题。但我真的不确定。
c# - System.Interactive:Memoize() 和 MemoizeAll() 之间的区别?
在 Reactive Extensions 的 System.Interactive.dll (v1.0.2521.0) 中,EnumerableEx
既有Memoize
方法又有MemoizeAll
方法。两者的 API 文档是相同的:
创建一个枚举原始枚举仅一次并缓存其结果的枚举。
然而,这些方法显然不相同。如果我使用Memoize
,我的 enumerable 在我第一次枚举它时具有值,而第二次似乎是空的。如果我使用MemoizeAll
,那么我会从任何一种方法的描述中得到我期望的行为——我可以根据需要多次枚举结果,并且每次都得到相同的结果,但源只枚举一次。
谁能告诉我这些方法之间的预期区别是什么?用例是Memoize
什么?这似乎是一个相当无用的方法,文档非常混乱。
c# - 使用 Rx 同步异步事件
我想充分利用.NET (Rx) 的反应式扩展,并希望获得一些关于执行一些基本任务的输入。为了说明我想要做什么,我有一个人为的例子,我有一个带有异步事件的外部组件:
该组件通过调用启动BeginStart()
。此方法立即返回,稍后,当组件完成启动时,将触发该Started
事件。
我想通过包装组件来创建一个同步启动方法并等待Started
事件被触发。到目前为止,这是我想出的:
我想摆脱ManualResetEvent
,并且我希望 Rx 有一个解决方案。但是怎么做?