问题标签 [rxcpp]

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 回答
414 浏览

c++ - RxCPP 的行为与 Rx.Net 不同

我正在使用 RxCPP 并且很难理解它的行为。

这里有两个程序,一个在 Rx.Net 中,另一个在 RxCPP 中。他们假设输出相同的打印,但事实并非如此。
该程序从鼠标流中获取点,并计算点之间的增量流。
鼠标是一连串的点,每一笔 - 从下到上按都是一个流。鼠标一个接一个地给出这样的流。

在这些测试中,预期的输出是:
Delta no 0 是:0,0
Delta no 1 是:5,0
Delta no 2 是:0,5
Delta no 3 是:2,3
这是 Rx.Net 输出的。
Rx.Cpp 仅输出第一行:Delta no 0 is: 0,0

知道吗?

Rx.Cpp 示例:

Rx.Net 示例:

0 投票
1 回答
324 浏览

c++ - RxCpp RAII 可观察订阅

我在模型视图设置中使用 RxCpp。视图更新方法订阅了一个可观察对象(通过 lambda 捕获this)。如果订阅比视图实例寿命更长,则会出现未定义的内存访问。我不希望订阅使视图保持活力。因此,我需要订阅在视图的析构函数上确定地结束。这听起来像是 RAII 的案例。

这会很危险吗?它是否以某种方式滥用了rx?我读过喜欢take_until在类似的设置。为什么会更好,如何在这里使用它?

谢谢!

0 投票
1 回答
389 浏览

c++ - 将 RxCpp 添加到 C++ Bazel 项目

我目前正在尝试编译一个简单的 c++ 示例项目,然后将 rxcpp 包含到我的主项目中,但是,我遇到了找不到 rxcpp 库的困难。

所有文件都在同一个目录中。

工作站规格:

  • Bazel 版本:0.11.1-homebrew
  • macOS:10.13.3
  • Clang:Apple LLVM 版本 9.0.0 (clang-900.0.39.2) ;目标:x86_64-apple-darwin17.4.0

主文件

Bazel 工作区文件写为

其中 BUILD.rxcpp 写为

Bazel 项目 BUILD 文件写为

跑步

回来:

我希望在当前目录中的 bazel-out/darwin-dbg/bin/external/RxCpp 下找到 rxcpp 库,但事实并非如此。

[编辑]

构建目录的输出如下:

0 投票
1 回答
615 浏览

c++ - 在 rxcpp 中创建自定义运算符

我正在尝试学习如何在 rxcpp 中创建自定义运算符,并且我能够创建位于此处的运算符。但是,我想了解如何创建更多通用运算符,实现rxo::operator_base并使用提升运算符。是否有任何文档可以通过一些简单的示例来学习这一点?

0 投票
1 回答
276 浏览

qt - 如何连接两个返回可观察对象的函数?

我写了一个函数,它返回一对QDateTime可观察的,就像这个:

因此,使用此功能,我可以订阅 a 轴上日期范围的更改QChart

我还写了另一个函数,给定两个日期,返回一个带有来自 sqlite db 的值的 observable,如下所示

如何在 RxCpp 中以惯用的形式将第一个函数(两个日期)的值作为输入传递给第二个函数?在管道结束时,我可以根据输入日期订阅来自数据库的值吗?

0 投票
1 回答
182 浏览

components - RXCPP,当我在 observable 中无限期使用重试运算符时堆栈溢出

我正在尝试制作一个可观察的,当检测到错误时,这将再次执行,但确实注意到了一些事情,当执行带有“重试”运算符的“on_error()”时,这只会再次重新运行 Observable 但是, Observable 的当前实例仍然在当前堆栈中,换句话说仍然活着

我做了一个测试来验证行为

所以,我的输入输出是

我确实希望看到“Destroy Obj”输出

我也有堆栈溢出异常

在此处输入图像描述

我的目标是,执行一个 Observable 对象,当触发错误时,这可能会再次重新启动,但会破坏当前对象,以防止堆栈溢出异常

也许还有另一种方法可以做到这一点,你能帮我吗?

0 投票
1 回答
115 浏览

c++11 - cpp 反应式扩展中的编译错误

我遇到了一个关于rxcpp. 捕获rxcpp::connectable_observable变量并调用它的连接方法时,出现如下编译错误。

问题代码如下所示。

我尝试了 2 种方法来通过编译
1. 注释“o.connect()”
1. 将变量 o 转换为静态变量,因此不需要捕获 o。代码如下所示

您能告诉我为什么会出现编译错误以及如何解决吗?

谢谢!

0 投票
1 回答
318 浏览

c++ - 如何使用 RxCpp 创建 ReplaySubject?

在我的 c++ 项目中,我需要创建具有初始值的主题,该初始值可能会被更新。在每次订阅/更新时,订阅者可能会触发数据处理......在之前的 Angular (RxJS) 项目中,这种行为是使用 ReplaySubject(1) 处理的。

我无法使用c++ rxcpp lib.

我查找了文档、片段、教程,但没有成功。

预期的伪代码(打字稿):

0 投票
1 回答
151 浏览

c++ - ReactiveX (rx) - 在对象上应用 observable 而不是在 observable 中创建对象

所以我尝试将 ReactiveX 理解为一个库已经有一段时间了,我相信我已经开始掌握基础知识了,但是,我遇到了一个问题,我在文档中找不到解决方案...

tldr:我想将一个可观察对象连接到一个类而不实际在可观察 lambda 中创建类,或者在可观察对象中创建类,然后能够提取该类。最后,我想要以某种方式或形式制作一个类的可观察对象,然后能够在可观察对象范围之外使用该类。

情况: 我有三层类,我有 A、B 和 C 类,其中 A 在所有 B 中都成立,后来所有 B 在多个 C 中成立。B 类和 C 类都可能存在于多个实例中(A 总是只有一个实例)。

问题: 所以在我的应用程序中,A 类将创建 C 的一个实例,并使用 Rx 使其可观察。当 C 被实例化并准备好时,我想获取该类并将其传递给 B 实例之一。但是,我的问题是,由于我需要在 observable create 方法中的 lambda 中创建 C 类,因此我实际上无法对新的 C 类做任何事情,它只存在于 lambda 范围内。所以我想要做的是将 C 的引用传递给 observable 并将其提供给订阅者,或者以某种方式从 observable lambda 中返回 C 实例。我尝试给 lambda 一个指向我的类的指针并使 lambda 可变,但是当这样做时,rx 给了我编译错误并抱怨 Rx 方法是 const。

我尝试像这样传递它但没有成功

是否存在任何其他方法来完成我想要的,或者我只是在这里误解了某些东西的概念?

0 投票
2 回答
561 浏览

c++ - 如何在可观察对象列表上使用 RxCpp 运算符?

我想在 RxCpp observables 的列表/数组上使用 zip 运算符,但 RxCpp 运算符只接受可变参数,并且我的列表的大小是动态的(在运行时已知)。

有没有办法在 observables 列表中使用这些运算符?提前致谢。