【问题标题】:Observable subscription twice可观察订阅两次
【发布时间】:2018-07-08 13:09:30
【问题描述】:

我使用 angular 4 和 observable。

使用主题和可观察对象在组件之间实际共享数据。

这是我的功能。

getNewSearchResults(): Observable<any> {
    return this._searchResultOne.asObservable();
  }

我只是使用这个订阅功能

this.searchService.getNewSearchResults().subscribe(res=>{
            console.log("res",res);
 })

同一时间返回两次。为什么?

我该怎么做。

请给我建议,

谢谢

【问题讨论】:

    标签: angular observable


    【解决方案1】:

    尝试在ngOnInit() 方法中进行订阅,并在ngOnDestroy() 方法中取消订阅observable。我希望这能解决您的问题。

    【讨论】:

    • 感谢您的回复。它的作品。但我有一个疑问。直接添加 ngOnInit() 时它的作品。同时我添加了另一个函数。订阅路由查询参数中的函数然后将可观察订阅返回两次。为什么?有什么区别。你能解释一下吗?
    • 实际上,如果没有您当前的实现,它很难解释。我不明白你在哪里添加了另一个功能。将所有订阅直接包含在 oninit 生命周期中是更好的做法。然后 Angular 将等待数据通过您订阅的 observable。在销毁组件之前,我们需要取消订阅这些 observable 以避免内存泄漏。这就像告诉 Angular ——嘿,我不再需要来自这里的数据了。否则,您可以多次获取数据,否则 Angular 将不必要地为该 observable 分配内存。
    猜你喜欢
    • 2017-10-06
    • 2017-04-13
    • 2020-09-16
    • 2021-05-30
    • 2018-07-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多