c# - 在 ReactiveX 中为另一个主题创建计算主题
问题描述
Subject
在 RX 中可以存储价值并被其他人订阅。我可以知道是否有办法使 aSubject
依赖于另一个Subject
作为源的计算版本Subject
?
解决方案
在某种程度上……是的!
可以定义彼此之间的可观察流。因此,虽然从另一个主题创建“计算主题”可能没有真正意义,但您可以创建一个依赖于主题的可观察对象,从而产生一个在源主题发出时发出的可观察对象。
示例:(堆栈闪电战)
const user$ = new Subject<User>(); // Subject source
const greeting$ = user$.pipe( // Observable source
map(user => `Hello ${user.name}!`)
);
user$.subscribe(
val => console.log('user$: ', val)
);
greeting$.subscribe(
val => console.log('greeting$: ', val)
);
user$.next({ id: 1, name: 'mannok' });
user$.next({ id: 2, name: 'BizzyBob' });
// Output:
// > { id: 1, name 'mannok' }
// > Hello, mannok!
// > { id: 2, name 'BizzyBob' }
// > Hello, BizzyBob!
greeting$
派生自user$
,因此每当user$
主题发出时,greeting$
也会发出。
推荐阅读
- nginx - NGINX。如何将所有请求作为 GET 请求?
- performance - Perl 在执行文件 IO 时提高性能
- c - 如何将 udp 数据包的内容保存到结构中并打印出来
- ios - 如何通过连接到 API 向 Core Data 添加自定义属性?
- excel - 如何使用变量将单元格中的数据添加/提取到公式中?
- angular - 尝试在边缘运行角度应用程序时出现参考错误
- reactjs - 我无法安装 firebase 5.9.4v
- php - 修剪功能在 codeIgniter 的模型文件中不起作用
- android - Android AnyChart - 由 BottomNavigationView 触发更改图表
- google-cloud-platform - ROS Melodic - GCP Ubuntu 18.04 - 无法连接到显示器