首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >当任何组件被销毁时,取消订阅/取消所有http请求

当任何组件被销毁时,取消订阅/取消所有http请求
EN

Stack Overflow用户
提问于 2018-12-14 04:13:40
回答 1查看 424关注 0票数 0

我们有很多组件发出http请求来获取它们的数据。当组件被销毁时,我的任务是取消http请求。所以我能做的就是进入每个单独的组件,实现ngOnDestroy(),并将http订阅存储为组件的类的成员,但是我们有太多的组件,我无法逐一完成。

有没有办法告诉angular,当任何组件被销毁时,取消它所有的http请求?

EN

回答 1

Stack Overflow用户

发布于 2018-12-14 05:00:42

另一个选择是定义一个更好的订阅模式,这样你就不需要取消订阅了。

例如,您可以这样做:

代码语言:javascript
复制
export class ProductEditComponent implements OnInit, OnDestroy {
  componentActive = true;

  ngOnInit(): void {

    // Watch for changes to the currently selected product
    this.store.pipe(
      select(fromProduct.getCurrentProduct),
      takeWhile(() => this.componentActive)
    ).subscribe(
      currentProduct => this.displayProduct(currentProduct)
    );

  ngOnDestroy(): void {
    this.componentActive = false;
  }

}

请注意takeWhile。这可确保在组件被销毁时停止所有订阅。

您可以在这里找到更多信息:https://brianflove.com/2016/12/11/anguar-2-unsubscribe-observables/ (但请注意,本文中显示的代码是针对较旧版本的RxJS的。)

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53769406

复制
相关文章

相似问题

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