繁体   English   中英

Angular 中的主题

[英]Subjects in Angular

因此,假设您有一个带有以下组件和服务文件的 angular 应用程序。 在一个组件中,用户订阅服务文件中的这个主题。

现在假设有人在服务文件中发出服务器请求并从服务器获得响应。

当我们收到服务器响应并使用 next() 方法触发 Subject 时,我们只会收到订阅此 Subject 的组件中的数据,或者基本上每个当前正在使用此应用程序并在其组件中打开此订阅的人?

成分

export class exampleComponent implements OnInit {
  ngOnInit() {
    this.exampleService.exampleSubject().subscribe();
  }
}

服务

export class exampleService {
  exampleSubject = new Subject();

  someOtherMethodWithHttpRequest() {
    return this.http.get(url).pipe(map(data => this.exampleSubject.next()));
  }
}

它会因为它是一个主题,并且主题是多播的。

编辑:我最初的回答是否定的,因为只有 BehaviorSubject 和 ReplaySubject 是多播的 这是错误的,所有主题都是多播的。

在这种情况下使用 BehaviorSubject 是一个好主意:它保证每个订阅者都会从 api 调用接收值,即使他们在 api 调用发生后订阅。 如果您在发出其值后订阅一个主题,您将永远不会从该 api 调用中收到该值。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM