我们是否需要取消订阅Angular中的http调用?

大卫

可能是一个愚蠢的问题,但无法轻松找到答案。

在Angular应用程序中,我Rxjs用于进行http调用以获取数据并将数据发布到服务器。假设我有一个服务MyService,其方法如下:

getData() {
  this.http
      .get("mybackendurl/mydata")
      .map(res => res.json())
      .subscribe(data => this.data = data);
}

因此,假设我每次浏览页面时都在几个地方使用此方法。不管这样做有多方便,我的问题是,这不像一个Promise,它会开始和结束,据我所知,它会保持连接打开直到源终止,所以我需要以某种方式取消订阅每次我完成请求时?

由于订阅是在服务中完成的,而不是在组件中完成的,因此该服务不会被破坏,因此我担心我可能会创建多个订阅和连接,而不是重用相同的订阅和连接。

谢谢!

苏伦·斯拉皮扬(Suren Srapyan)

对于Http请求,您无需退订。它实际上完成了可观察性,因此您不会有任何内存泄漏

您可以使用对象的add功能进行检查Subscription取消订阅时将调用此函数。您也可以通过将complete函数(第三个参数)传递给函数来进行检查,该函数subscribe将在请求后被调用,这意味着可观察性已完成。

this.http
    .get("mybackendurl/mydata")
    .map(res => res.json())
    .subscribe(data => this.data = data)
    .add(() => console.log('Unsubscribed'));

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

Angular4 - 我需要取消订阅 setTimeout 调用吗?

Instagram Realtime API是否自动取消我们对大量标签的订阅?

当我们已经有双向数据绑定时,为什么需要在 angular5 中订阅?

如果在调用http.Get(url)时发生错误,我们是否需要关闭响应对象?

为什么我们需要在Spring Security configure(HttpSecurity http)方法中调用http.addFilterBefore()方法?

为什么我们需要的订阅者方法:Angular2

我们是否需要在每次调用SQLExecdirect之前调用SQLAllocHandle来分配SQLHSTMT

Angular 是否需要取消订阅 this.activatedRoute 订阅

我们如何检查频道是否已在pubnub中订阅?

我们需要取消分配CFArray吗?

我们是否需要在释放之前为 UIControl 对象调用 removeTarget(_:action:for:) ?

我们是否总是需要在闭包内部调用完成处理程序?

它是否使用“super”在覆盖方法中调用覆盖方法,我们是否在调用重载?

我们如何订阅 Angular Material Tables 中当前显示的数据

为什么我们在http响应消息中既需要状态代码又需要短语代码?

是否需要在我们想要验证是否使用Moq调用的Mock对象上设置方法的设置调用?

如果我们使用 Angular 6,是否需要自定义客户端验证?

我们是否需要维护每个订阅将有唯一的 EventType 或者多个订阅可以在 Azure EventGrid 域中具有相同的 EventType

为什么我们需要在此脚本中调用“ c.set.bind(c)”?

我们需要在活动的onDestroy()方法中调用主题的onComplete()吗?

为什么我们需要在PyTorch中调用zero_grad()?

Flask virtualenv-在Ubuntu中通过`pip`安装时,我们需要调用`sudo`吗?

为什么我们需要在民意调查中调用poll_wait?

为什么我们需要在MSIL中显式调用父构造函数?

使用Angular Directives,是否需要取消订阅服务?

当我们需要修剪时,我们不需要在oracle中

如果我们想在 Hibernate 中存储日期,是否需要 TemporalType = Timestamp?

我们是否需要在 MySQL 中的给定列上使用多个索引?

我们是否需要手动清除闭包中未引用的变量?