如何解决在 ReactiveX 中为另一个主题创建一个计算主题
RX 中的Subject
可以存储价值并被其他人订阅。我可以知道是否有办法使 Subject
依赖于另一个 Subject
作为源 Subject
的计算版本?
解决方法
在某种程度上......是的!
可以定义彼此之间的可观察流。因此,虽然从另一个主题创建一个“计算主题”可能没有意义,但您可以创建一个依赖于一个主题的 observable,产生一个在源主题发出时发出的 observable。
示例:(StackBlitz)
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$
也会发出。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。