当前位置: 首页 > 知识库问答 >
问题:

我们是否需要取消订阅完成/错误输出的observable?

鲁博雅
2023-03-14

当我知道observable在组件/类超出作用域之前肯定会完成(使用completeerror通知)时,我还需要取消订阅它以防止内存泄漏吗?换句话说,是否自动完成/错误的可观察清理,这样我就不用担心了?

共有1个答案

常博裕
2023-03-14

关于您的问题,可观察合同的订阅和退订部分是明确的。它指出:

当Observable向其观察者发出OnError或OnComplete通知时,这将结束订阅。观察者不需要发出取消订阅通知来结束可观察对象以这种方式结束的订阅。

在“可观察端接”一节中也提到了这一点:

 类似资料:
  • 我通读了RxJS文档,并希望确保我理解了< code > subscriber . unsubscribe()和< code > subscriber . complete()之间的区别。 假设我有一个有两个订阅者的可观察对象,订阅者1和订阅者2。如果订阅者1对其订阅调用取消订阅,它将不再接收来自可观察对象的通知,但订阅者2将继续接收它们。 <代码>的文档。complete(): 观察者回调,用于

  • 问题内容: 如果一个可观察对象完成,我是否仍然必须取消订阅/处置(在RxJava2中)以移除该观察对象(以防止内存泄漏),或者一旦发生or 事件,它是否由RxJava内部处理? 什么其他类型的喜欢,,等。 问题答案: 是的,你是对的。 流终止后(已调用onComplete / onError),订户将自动退订。您应该能够使用Subscription对象上的方法测试这些行为。

  • 问题内容: 我是否需要从HttpServletResponse“刷新”输出流? 我已经从看到了,应该关闭servlet输出流吗?我不需要关闭它,但是尚不清楚是否需要冲洗它。我也应该从容器中得到吗? 问题答案: 不用了 servletcontainer将为您刷新并关闭它。顺便说一句,关闭已经隐式调用了flush。 另请参阅Servlet 3.1规范的 5.6章: 关闭响应后,容器必须立即将响应缓冲区

  • 问题内容: 我有这样的查询: 我这样做的原因是为了确保如果有错误,我可以做一个 我运行了代码,得到的消息是 SSMS并未像平常那样声明某些内容。 当我尝试执行a时,它表示该交易从未开始 所以我的问题是, 行 是否 已提交到数据库? 如果不是,那么为什么它只说“由于错误而导致查询未完成”呢? 问题答案: 描述 从SQL Server 2005开始,您可以使用以下命令进行错误处理: TRY … CAT

  • 我使用SockJS和StompJS,当我在浏览器中打开我的应用程序时,有时它会在连接到websocket之前尝试订阅一些主题。我希望主题订阅等待应用程序连接到websocket。 这就是我实现此代码的原因,我将其称为: 因此,我只在连接状态为时才订阅该主题,并且只有在客户端首次成功连接时才会调用该主题。 我想稍后从主题中取消订阅,所以我需要内部订阅返回的对象,我还需要内部订阅的消息。 我所实现的很

  • 我试图使用create subscription API来打开一个日历事件的订阅通道,这样我们就可以在面试者对面试做出回应时收到更新。 我已经尝试了许多不同的方法来实现这个请求: 我已经完成了oauth流程,为具有以下权限范围的用户检索图形访问令牌: 使用上述范围的访问令牌,在尝试创建订阅之前,我将带有< code>{eventId}的事件添加到共享日历中,假设用户相对Id为< code>{sha