问题标签 [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 投票
1 回答
214 浏览

c# - 带有嵌套事件的 IObservable 上的执行上下文

执行上下文嵌套事件

嗨,我想了解更多关于 an 的执行上下文IObserver<T>以及与“嵌套事件”相关的信息。

基本上,当我将它与 linq-to-IEnumerable 进行比较时,我会构建一个表达式树,并且当我调用诸如ToList()……之类的东西时会被执行。例如

这只是一个被执行的表达式(我假设当我执行时FirstOrDefault)......这如何与IObservable世界一起工作?我认为它的工作原理几乎相同......我会很高兴对此有一些意见......</p>

这与我真正的问题有关,因为我有一些 Event 是某种事件容器。

并且ContainerEventArgs将包含一个坐标数组......我必须在那里进行操作才能得到我正在寻找的特定坐标(中心坐标)。中心坐标是我真正喜欢观察的东西。每当这种变化我想得到通知,..

在没有 Rx 的标准 .Net 方式中,我会做这样的事情来获取 CenterCoordinate 的坐标更改事件。

假设我有这样的第二个事件:

好吧,长话短说……现在我应该如何用 RX 处理这个问题?我到目前为止是这样的:

所以这会返回一个IObservable<Container>()但就像我说的我对内在价值更感兴趣......

我想出了这个……</p>

我的SkipWhileGetCenterCoordinates方法有意义吗?或者我是否订阅了任何事件(与我对 IEnumerable 的介绍相关),因为我需要先解压缩坐标?…什么时候执行 Observable Expression-Tree?或者我不需要关注那个(性能)?有没有更好的方法来使用主题或发布其他事件来处理这个问题?这是 RX 风格吗?有什么改进建议吗?

0 投票
1 回答
4290 浏览

javascript - RxJS:可观察对象和单个观察者的递归列表

我在可观察的递归链上遇到了一些麻烦。

我正在使用 RxJS,它目前的版本为 1.0.10621,包含最基本的 Rx 功能,以及用于 jQuery 的 Rx。

让我为我的问题介绍一个示例场景:我正在轮询Twitter 搜索 API(JSON 响应)以获取包含某个关键字的推文/更新。响应还包括一个“refresh_url”,应该使用它来生成后续请求。对该后续请​​求的响应将再次包含新的 refresh_url 等。

Rx.jQuery 允许我将 Twitter 搜索 API 调用变成一个可观察的事件,该事件会产生一个 onNext 然后完成。到目前为止,我尝试的是让 onNext 处理程序记住 refresh_url 并在 onCompleted 处理程序中使用它来为下一个请求生成一个新的 observable 和相应的观察者。这样,一对可观察者 + 观察者对无限期地跟随另一对。

这种方法的问题是:

  1. 后续的 observable/observer 在其前辈还没有被处理掉的时候就已经存活了。

  2. 我必须做很多令人讨厌的簿记才能保持对当前活着的观察者的有效引用,其中实际上可能有两个。(一个在 onCompleted 中,另一个在其生命周期的其他地方)当然,需要取消订阅/处置观察者。簿记的替代方法是通过“仍在运行?”布尔值来实现副作用,正如我在示例中所做的那样。

示例代码:

不要被从请求到推文的双层 observables/observers 所迷惑。我的示例主要关注第一层:从 Twitter 请求数据。如果在解决这个问题时,第二层(将响应转换为推文)可以与第一层合二为一,那就太棒了;但我认为那是完全不同的事情。目前。

Erik Meijer 向我指出了 Expand 运算符(参见下面的示例),并建议将Join 模式作为替代方案。

这应该可以复制粘贴到 LINQPad 中。它假设单例 observables 并产生一个最终的观察者。

所以我的问题是:如何在 RxJS 中做最好的扩展技巧?

编辑:扩展运算符可能可以按照此线程
中所示的方式实现。但是需要生成器(我只有 JS < 1.6)。 不幸的是,RxJS 2.0.20304-beta没有实现 Extend 方法。

0 投票
2 回答
389 浏览

haskell - 将 FRP(尤其是反应香蕉)用于基于回合的 ascii 游戏是否有意义?

我正在考虑类似gnugo的 ascii 界面。我认为轮流是一对共同进化的(允许用户输入的单子)流。这让我隐约想起了管道。

我不太确定如何使用现有的库来做到这一点。

0 投票
2 回答
190 浏览

haskell - 你如何删除反应香蕉中的重复事件

在反应香蕉中,我有一个事件流,它产生一系列数字,其中一些连续重复多次(我不关心所有重复,只是顺序重复)。如何修改该事件流以仅包含非顺序重复项?

我尝试使用更改将其转换为一种行为,认为该行为只会在事件是新数字时“更改”,而是每次收到新的输入事件时行为都会触发更改事件。

0 投票
2 回答
283 浏览

haskell - Haskell 的响应式香蕉中响应式网络的 flatMap 的等价物是什么?

我正在寻找响应式香蕉中的函数,该函数将根据另一个事件流或信号的传入值(行为?)从下一个要发出的事件流中进行选择。在 scala 库中,reactive-web 是通过以下方式完成的:

谢谢 !

0 投票
3 回答
2815 浏览

c# - 生成 IObservable 的首选方法来自流

作为我们应用程序的一部分(现在生产大约 4 个月),我们有一个来自外部设备的数据流,我们将其转换为 IObservable

到目前为止,我们一直在使用以下内容来生成它,并且效果很好。

昨晚我想知道是否有一种方法可以使用yield return语法来实现相同的结果并想出了这个:

它似乎工作得很好,而且更干净,但我想知道一种方式是否比另一种方式有任何优点或缺点,或者是否有更好的方法。

0 投票
1 回答
609 浏览

.net - Reactive Extensions 基于特定数量的并行处理

我是响应式扩展的新手。我有对象集合并为每个对象调用一个方法,并且方法返回布尔值。不是通过使用 for each 循环并调用该方法来遍历每个循环,而是有一种方法可以在响应式扩展中同时调用(fork 和 join)给定数量的对象(例如,一次 5 个)并在第一个完成后调用该方法,第六个应该调用方法,它应该继续,直到所有对象都完成。

感谢您的回复。

0 投票
2 回答
2143 浏览

java - LMax Disruptor 和 Rx 框架概念之间的平行关系?

正如我在这里读到的http://mechanitis.blogspot.fr/2011/06/dissecting-disruptor-how-do-i-read-from.html

“对于每一个单独的项目,消费者只需说‘当你得到的数量超过这个数字时告诉我’,并被告知它可以获取多少条目作为回报。”

这不与 Erik Meijer http://www.youtube.com/watch?v=8Mttjyf-8P4公开的 Rx 框架概念有关 吗?

如果是,Rx Framework 是否有助于实现类似的软件?

0 投票
2 回答
186 浏览

windows-phone-7 - 学科在处方中

在 Rx 中,Subject 在现实生活中的用途是什么?我在 101 个样本中找到了一个样本,但我认为这并没有让我清楚地知道在哪里应用它。请任何人发布一些简单的示例来演示 Rx 中主题的工作。我在 Windows Phone 的上下文中使用它。

0 投票
1 回答
129 浏览

groovy - 在 Groovy 闭包中跟踪方法调用

我正在编写一个用于反应式评估的小型 DSL,需要在 Groovy 中进行元编程方面的帮助。

示例 DSL 代码:

'var' 函数创建新Signal实例。

signal函数需要Signal闭包内的实例列表(引用ab示例)。

工作实施:

有什么方法可以等待传递it变量,所以示例看起来像

编辑:用于测试的 存根Signal实现:

DSL的测试用例: