[RxJS] Subject asObservable() method

You can create your own state store, not using any state management libraray.

 

You might have seen the partten: People create a Subject, then use abObservable() method.

复制代码
export class State {
  private prevState: INEO[];
  private neoStoreSubject: BehaviorSubject<INEO[]>;
  neoStore$: Observable<INEO[]>;

  protected constructor() {
    this.neoStoreSubject = new BehaviorSubject([]);
    this.neoStore$ = this.neoStoreSubject.asObservable();
  }

  ...
}
复制代码

 

Main reason for that is, we want to keep:

this.neoStoreSubject = new BehaviorSubject([]);

as private, we don't want any component can call .next() method to update store. The job for updating store should only happen in 'State' class.

// State class
setNeoStore(neoList: INEO[]) {
this.setPrevState(); this.neoStoreSubject.next(neoList); this.dismissError(); }

 

For component, we can subscribe this.neoStore$. it can only receive the data, but not update the store directly.

复制代码
// From Component

  biggerFasterNeo$ = this.data.neoStore$.pipe(
    filter(neoList => !!neoList === true),
    map(neoList => neoList.filter(neo => {
      if (neo.estimated_diameter > 0.5 || neo.relative_velocity > 50000) {
        return neo;
      }
    }))
  );
复制代码

 

 

For component

posted @   Zhentiw  阅读(801)  评论(0编辑  收藏  举报
编辑推荐:
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具
历史上的今天:
2018-10-25 [Unit Testing] Fundamentals of Testing in Javascript
2016-10-25 [Debug] Chrome Devtools: Elements - Console Integration
2016-10-25 [Flexbox] Use Flex to Scale Background Image
点击右上角即可分享
微信分享提示