问题标签 [rx.net]

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.

0 投票
1 回答
637 浏览

c# - How do I get the last known value of an IObservable?

Suppose I am building an image editor using Rx.Net. The user can manipulate the canvas using the mouse. The manipulation that is applied depends on the currently selected tool. For example, there might be a "draw" tool and an "erase" tool. Only one tool can be selected at a time.

I have three streams; one for mouse events; one for commands issued by clicking the mouse; and another for tool selections:

The commands stream depends on the other two: commands are issued when the user clicks the mouse and the command generated depends on the last selected tool. Note that a command should not be issued when the user changes tool, only when they click the mouse.

Now, I could store the last selected tool in a variable like this:

I can use selectedTool to build the commands stream:

However, this doesn't seem like the "reactive" way of doing things. Can I achieve this same logic using stream compositions?

I have looked at CombineLatest but it causes unwanted events to be generated when the user switches tool. I only want commands to be issued when the user clicks.

0 投票
0 回答
54 浏览

c# - 我应该如何处理 Rx.Net 中的侧流?

我正在使用 Rx.Net 构建一个模拟。用户输入被建模为初始状态的状态转换流。使用Scan我能够将这些转换解析为当前状态。

问题是转换可能有副作用。这些被建模为实现ISimulationEvent.

我尝试了几种方法:

  • 将副作用存储在当前状态对象中,并在每次转换时清除它们
  • 返回一个Tuple游戏状态并IList<ISimulationEvent>Scan
  • 传入副作用回调以聚合它们

每个解决方案都感觉“hacky”。

有没有一种干净的方法可以使用 Rx.Net 实现这一点?


这是我的命令如何折叠成状态的示例:

每个都Apply应该输出一个流ISimulationEvent作为副作用。但是,我还需要保留结果SimulationState

0 投票
2 回答
361 浏览

c# - 我应该如何在 FRP (Rx.Net) 中建模循环依赖关系?

我正在尝试通过使用 Rx.Net 来实现井字游戏来了解有关功能反应式编程的更多信息。我遇到的问题是我的游戏逻辑中似乎存在循环依赖。

commands流(PlaceTokenResetGame等)是从用户输入的流中生成的。

游戏的当前状态 ( boardStates) 是commands从初始状态开始应用到前一个状态得出的:

但是,commands流应该依赖于boardStates流。这是因为有效的命令集随当前状态而变化。

例如,该PlaceToken命令只应在用户单击空图块时发出,但空图块集由当前状态定义!

总而言之,我有两个似乎相互依赖的流。我应该如何在函数响应式编程中解决这个问题?

0 投票
2 回答
323 浏览

c# - 节流但如果结果来得太晚则丢弃结果

我正在编写一个用户界面,用户可以在其中输入搜索词,并且列表会不断更新提供建议。

我的第一个想法是 Rx 原始 Throttle 是一个完美的匹配,但它让我达到了一半。

这些建议需要一段时间才能获取,所以我不是在 UI 线程上异步获取它们。

问题是,如果用户再次键入限制时间跨度,我想丢弃/跳过/丢弃结果。

例如:

  • 时间开始,用户按键:0ms
  • 油门设置为 100 毫秒。
  • 提取需要 200 毫秒。
  • 在 150 毫秒时,用户按下了另一个键

现在有了 Throttle,第一次获取仍然会继续填充 gui 建议列表。我想学习的是如何取消第一次提取,因为它不再相关?只有第二次按键应该触发对 gui 的更新。

这是我尝试过的

(我使用 ReactiveUI 但 Q 是关于 Rx)

0 投票
1 回答
66 浏览

.net - .NET 等待工作的任务

我想在服务器上创建等待工作的线程。我希望每个访问该站点的用户有 1 个线程。它可以使用 thead.sleep(100) 创建一个 while 循环,但这似乎效率不高。我们跟踪属于每个访问者的每个任务,以便我们可以访问他们的 winform 相关对象。

所以我们需要线程,因为我们已经在 winforms 中投入了很多年,而且很多代码都在表单代码隐藏中,所以我们必须为每个用户启动 MainForm 的一个实例,并在用户访问该站点时将其保存在内存中。html UI 非常愚蠢,只响应我们的套接字提供的信号(如打开消息框或小表单)。例如,对于消息框(是/否),服务器必须等待用户选择才能继续该过程。

最初的糟糕设计迫使我们采用这种有效且快速的方法。我只想用更好的东西(更容易/更快)替换等待循环。我们不能完全重做它,因为它需要额外花费 1 年的时间来开发

也许 rx.NET 可以提供帮助,但我对此一无所知。

这里有一些相关的答案,但并不明显。

谢谢

菲利克斯

0 投票
2 回答
451 浏览

c# - rx 网络中的 C# 方法捕获

我有服务于 cron 表达式

但是我知道在这个地方尝试捕获块我不好,因为 Commit 会被接受。我也有

所以也许我可以将方法 catch() 放到这个扩展中?如果是,我该怎么做?

我找到了

但是sequnce在出错后停止工作,但必须继续。有一些提议吗?

0 投票
1 回答
88 浏览

c# - 如何与 GroupBy 聚合并等待结果

比如说,我正在跟踪每个球员为获得板球名单所走过的距离。我可能有以下对象

  • 旅行(IList 腿)
  • 腿(距离、持续时间、玩家和所属行程)
  • 球员(属于球队)
  • 团队

我想使用 Reactive Extensions 聚合这些数据。这是我的第一次尝试:

如何确保在第二个 Select() 语句之前完成总和?

0 投票
2 回答
233 浏览

c# - Rx.Net GroupBy 实现很少缺少元素序列

我正在使用 RX 2.2.5。我有 2 个视图加载子订单

在 groupBy 获得所有元素序列之前,问题出现在 groupby 之后,它很少错过元素序列。我不认为它的并发问题从日志中可以明显看出。自定义 Snoop 扩展方法用于生成这些日志。

格式化时间:(线程):消息

正如您在 groupby onNext 被调用两次之前所看到的,但在它错过了一次之后。这里的 Rx 语法有问题还是已知问题?任何见解会有所帮助吗?如果需要进一步澄清,请发表评论。

更新: 添加工作/理想的日志:

更新 2:可能的错误或功能

GroupBy 仅在 fireNewMapEntry 为真(GroupBy.cs)时才会触发 groupedObservable 并且这发生在这里

其中 _map 的类型为Dictionary<TKey, ISubject<TElement>>。这可能是问题吗?

0 投票
2 回答
421 浏览

c# - 是否有像 StartWith 这样的扩展,但用于可观察序列的结尾?

我想在我的可观察序列中附加一个额外的“关闭”项目。是否有一个反应式 LINQ 扩展类似于StartWith但用于可观察序列的结尾?

这是我想要的近似值,尽管它似乎没有触发最后一个元素:

0 投票
1 回答
414 浏览

rx-java - 反应式扩展是否仅适用于返回集合的 API 调用?

我有一个代理,它调用多个 REST API 来为 UI 创建课程粒度输出。UI 是用 KnockoutJS 构建的。我正在使用任务/异步方法来异步调用 API。只有 1 或 2 个 API 返回列表,所有其他 API 返回平面值对象。Rx 可以用于组合那些不返回集合的 API 的结果吗?由于输出不是一个集合,这意味着它不是一个事件流,那么将此类 api 调用与 Rx 结合起来是否违反 Rx 指南?