问题标签 [reactive-programming]

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 投票
4 回答
379 浏览

c# - C# 中的计算数组值 - 反应式编程

示例 1

正如我们所知,数据库中有计算列的概念,其中列是根据相邻列的值计算的。

问题是计算列不能与当前行之外的其他行相关。

示例 2

然后我们有电子表格(即 Excel),其中一个单元格可以有一个公式。这类似于计算列,但更强大。公式可以与电子表格中的任何单元格(或一组单元格)相关,而不仅仅是 RDB 中的当前行/列。

问题

计算(或自动更新值)的概念很棒,但我如何在 C# 中的一组值/对象中做类似的事情?

我想创建一个值列表(或数组),其中每个值都与同一列表中的其他(或一组)值相关?这就像电子表格单元格值......更改一个值并且相关的值随之更改(以及整个相关的子树值)。

C#中有这样的概念吗?

我将如何以最聪明的方式做到这一点?我知道我可以有一个LinkedList对象,其中对象的属性值将与同一列表中的其他对象相关,并在访问值时进行评估(按需评估)。这可能意味着在此过程中会评估几个(所有祖先节点)。有没有更好的方法可以更像电子表格单元格,它们首先被评估然后单独访问(传播评估)?

这当然也应该适用于多维数组。

0 投票
2 回答
175 浏览

haskell - 如何在反应香蕉中处理多个窗口和单个数据结构

我想知道反应香蕉是如何设计来处理以下情况的:

假设我有一个中央数据结构。用户能够自由地打开和关闭任意数量的不同类型的窗口,这些窗口既显示数据又允许用户对其进行修改。

因此,鉴于这种情况的性质,我认为仅仅尝试创建一个大型网络并不会奏效。这是每个窗口都有一个网络并且以某种方式连接的东西吗?

在像这样的其他情况下,我将数据结构放在每个人都向其发送更新的单个通道后面。然后数据结构将“发布”所有窗口都“收听”的更新(触发事件)。

0 投票
1 回答
474 浏览

.net - HTTP POST 反应扩展异步。模式句柄错误

我正在尝试使用以下代码,但发生异常时它不起作用。谁能帮我解决这个问题?我试图在 fetchresponse().catch() 中抛出 web 异常。是否可以返回不同类型的数据作为回报(不仅仅是一个字符串)。

0 投票
1 回答
2310 浏览

system.reactive - 使用异步模式 (queue.BeginReceive,queue.EndReceive) 使用响应式扩展 (Rx) 接收 MSMQ 消息

我在我的项目中使用 Rx 已经有一段时间了,专门用于 Socket 编程,好的部分是它做得很好。管理我的代码、性能优势以及更好的执行和解释。

最近我必须修改我的项目的流程,我需要将所有传入数据(来自套接字操作)转储到队列中(使用 MSMQ 实现作为排队决定)。

由于 MSMQ 提供了从队列中取出消息的异步调用(但以一种奇怪的模式)。我现在一直在努力为此目的使用 Rx,但可以这样做。

问题:有人可以给我一个干净的代码示例来实现 Rx 以使用异步模式从队列接收消息。

我需要类似于这样的 MSMQ 的异步运算符实现

提前致谢。*为 Rx 和 .NET欢呼*

0 投票
2 回答
234 浏览

c#-4.0 - 在特定时间调用 Observable 方法的最佳方法是什么?

我正在使用 RX 创建一个异步 Web 请求。是否有一个好的调度程序可以在预定义的时间调用 Web 请求?我很困惑使用哪一个:Task Scheduler 或 RX Scheduler。

0 投票
2 回答
181 浏览

c# - 为什么我使用重复()得到不确定的结果

我正在尝试扩展我对 Rx 的了解。所以我只是在玩流,并试图让它们表现得像我期望的那样。

虽然我已经阅读过,Repeat() 运算符在实践中存在困难,因为您可能会在 OnCompleted 和重新订阅之间丢失通知,但我自己无法弄清楚为什么会发生以下情况。

当我运行这个例子时,结果是完全不确定的:

结果1:

很好的是它忽略了 2 和 4,但即使在这个结果内部也有一些奇怪,因为实际上 3 和 5 之间并没有真正的 2 秒差距。

然而,结果可能更糟。看到这个:

1 和 2 之间没有 2 秒的间隔。正好是 1 秒。他为什么不把它放在一边?

如果有人能为我澄清事情,我会非常高兴!

编辑

我只是注意到这里可能是错误的合并。如果我将查询重构为 Concat 事情似乎应该发生:

0 投票
2 回答
467 浏览

c# - 为什么我不需要在这个冷的 observable 上发布?

既然我在Observable这里感冒了,我订阅了几次“分组”,为什么我不需要在这里发布?当我运行它时,我本来希望它会带来不需要的结果,但令我惊讶的是,它可以在有和没有 Publish 的情况下工作。这是为什么?

编辑

正如 Paul 所注意到的,因为我们订阅了两次底层的冷可观察对象,我们应该重复这个序列两次。但是,我没有运气使这种效果可见。我试图插入调试行,但例如这只会打印一次“执行”。

我想知道我们是否可以使我们正在处理一个冷的 observable 并且没有使用Publish(). 在另一个步骤中,我想看看Publish()(见上文)如何使效果消失。

编辑 2

正如 Paul 所建议的,我创建了一个IObservable<string>用于调试目的的自定义。但是,如果您在它的Subscribe()方法中设置断点,您会注意到它只会被命中一次

所以对我来说,这个问题仍然悬而未决。Publish为什么我这里不需要这么冷Observable

0 投票
1 回答
619 浏览

haskell - 学习Netwire的简单练习?

Haskell wiki > Netwire有一些很好的 Netwire 介绍材料,但现在(作为业余爱好者 Haskell)我对更多的东西感兴趣。什么样的简单练习有助于提高我的箭/网线技能?

0 投票
3 回答
165 浏览

.net - 编写可用和可维护的代码

我是响应式编程的新手,遇到了一个问题......

我的代码如下所示:

怎么改成fluent Rx?我从这段代码开始:

有任何改进此代码的建议吗?也许另一种解决方案?我不喜欢这种级联代码...

谢谢!

0 投票
2 回答
479 浏览

haskell - 在 FRP 中应用行为(和其他类型)的位置

我正在使用reactive-banana开发一个程序,我想知道如何使用基本的 FRP 构建块来构建我的类型。

例如,这是我真实程序中的一个简化示例:假设我的系统主要由小部件组成——在我的程序中,是随时间变化的文本片段。

我本可以有

但我也可以

Behavior Widget在我想谈论随时间变化的行为时使用。这似乎让事情变得“更简单”,并且意味着我可以Behavior更直接地使用操作,而不必解包和重新打包小部件来完成它。

另一方面,前者似乎避免了实际定义小部件的代码中的重复,因为几乎所有小部件都随时间而变化,而且我发现自己甚至定义了少数不带的小部件Behavior,因为它让我可以将它们与其他人以更一致的方式。

另一个例子,对于这两种表示,有一个实例是有意义的Monoid(我想在我的程序中有一个),但后者的实现似乎更自然(因为它只是将 list monoid 提升到 newtype )。

(我的实际程序使用Discrete而不是Behavior,但我认为这无关紧要。)

同样,我应该使用Behavior (Coord,Coord)还是(Behavior Coord, Behavior Coord)表示 2D 点?在这种情况下,前者似乎是显而易见的选择;但当它是代表游戏中实体之类的五元素记录时,选择似乎不太明确。

本质上,所有这些问题都归结为:

使用 FRP 时,我应该在哪一层应用Behavior类型?

(同样的问题也适用Event,尽管程度较轻。)