首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在ngOnint()服务方法内部多次调用

在ngOnint()服务方法内部多次调用
EN

Stack Overflow用户
提问于 2020-01-07 20:56:08
回答 2查看 85关注 0票数 1
代码语言:javascript
复制
  ngOnInit() {
    this.store.pipe(select(empReducer.getErrorStatus)).subscribe(err => this.Error = err);
    this.store.pipe(select(empReducer.getEmpInfo)).subscribe(res=> console.log('test'));
}

控制台调用不止一次为什么?

EN

回答 2

Stack Overflow用户

发布于 2020-01-07 21:00:51

我只看到两种可能性:

  1. empReducer.getEmpInfo不止一次发出。
  2. 在您提供的代码中,有订阅,但在销毁上没有取消订阅(无论是使用unsubscribe(),还是使用takeUntil模式)。如果组件被创建、销毁、再创建(例如,用户转到另一个视图并再次返回),您将拥有两个或更多活动subscriptions.
票数 3
EN

Stack Overflow用户

发布于 2020-01-07 21:30:41

正如之前建议的那样,检查响应以查看您订阅的内容。对于订阅,您可以使用此模式来确保在组件被销毁时取消订阅所有订阅。希望这能有所帮助。

代码语言:javascript
复制
private _subscriptions: Subscription = new Subscription();

public ngOnInit():void {

  this._subscriptions.add(
    this.store.pipe(select(empReducer.getErrorStatus)).subscribe(err => this.Error = err)
    )
  );

  this._subscriptions.add(
    this.store.pipe(select(empReducer.getEmpInfo)).subscribe(res => console.log('test')
    )
  );
}

public ngOnDestroy(): void {
    this._subscriptions.unsubscribe();
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59628868

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档