如何使用 RxCpp 创建重播主题
How to create a ReplaySubject with RxCpp?
在我的 c++ 项目中,我需要创建一个具有初始值的主题,该值可能会更新。在每次订阅/更新时,订阅者可能会触发然后数据处理...在之前的 Angular (RxJS( 项目中,这种行为是用 ReplaySubject(1( 处理的。
我无法使用c++ rxcpp lib
重现这一点。
我查找了文档,片段,教程,但没有成功。
预期的伪代码(打字稿(:
private dataSub: ReplaySubject<Data> = new ReplaySubject<Data>(1);
private init = false;
// public Observable, immediatly share last published value
get currentData$(): Observable<Data> {
if (!this.init) {
return this.initData().pipe(switchMap(
() => this.dataSub.asObservable()
));
}
return this.dataSub.asObservable();
}
我想你正在寻找rxcpp::subjects::replay。请尝试以下操作:
auto coordination = rxcpp::observe_on_new_thread();
rxcpp::subjects::replay<int, decltype(coordination)> test(1, coordination);
// to emit data
test.get_observer().on_next(1);
test.get_observer().on_next(2);
test.get_observer().on_next(3);
// to subscribe
test.get_observable().subscribe([](auto && v)
printf("%dn", v); // this will print '3'
});
相关文章:
- 如何使用MSVC 2019创建和使用Qt 5.14.0自定义小工具插件
- C++共享库:创建和使用
- 如何创建一个使用开源c项目的c++控制台应用程序
- 如何创建和使用存储为 c++ 对象的 python 对象?
- 我正在尝试创建一个使用 c++ 中的参数包构造函数的异常类
- 如何创建目录C (使用_mkdir)
- 如何在 C 中创建用于使用 C++ 代码的包装器?
- 创建进程使用路径时出现错误事件:类型 "char *" 的 E0167 参数与类型 "LPWSTR" 的参数不兼容
- 创建用于使用库的 cmake 模块
- 类创建和使用问题
- 如何在C 类中使用备用参数列表创建和使用finturePointer
- 如何使用 boost::p ython 创建和使用 Python 对象的实例
- 在 Solaris 上创建和使用动态共享库
- 是否可以创建和使用MatIterator数组
- 正在堆中创建和使用数组
- 如何创建和使用指向类中未知数量结构的数组的指针
- 在Xcode控制台项目中创建和使用C++库
- C++如何创建和使用指针来查找字符数组的长度
- 如何在C++中创建和使用共享库
- 在OpenSceneGraph中创建球体(使用osg::Geometry)