Angular自动取消订阅RxJs

Angular自动取消订阅RxJs

在使用 rxjs 时我们经常忘记调用unsubscribe()而导致内存泄露,很多时候你很难发现它,在RxJs官方有这样一段话:

What is a Subscription? A Subscription is an object that represents a disposable resource, usually the execution of an Observable. A Subscription has one important method,unsubscribe, that takes no argument and just disposes the resource held by the subscription

我们可以看出对于 Subscription 对象我们需要手动调用unsubscribe()取消订阅,这样就不会导致内存泄露。

下面我们讲讲什么时候该取消订阅。

Observable的取消订阅

Observable对象取消订阅有下面三种方式:

  • Observable完成值的发送,执行Observable.onComplete()。
  • Observable发生错误,执行Observable.OnError()。
  • 订阅者主动取消订阅,执行subscription.unsubscribe()。

在上面中的Observable.onComplete()Observable.OnError()这两种情况,Rxjs会自行解决,在完成或者发生错误

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/535990.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

websocket心跳检测前后端架构

websocket心跳检测前后端架构 本篇文章为初略架构websocket在前后端的心跳检测机制,实现相对毛糙。 下面介绍内容参照 廖雪峰 的描述,为了切换页面麻烦,这里就直接挑简要的信息复制黏贴过来。 廖雪峰 – WebSocket 教程。 为什么需要 WebSocket? 初次接触 WebSocket 的人…

Angular消息通知组件ngx-notification

Angular消息通知组件ngx-notification It is a flexible and usable component. Demo Demo Installation 1.You need install @flywine93/ngx-notification by npm npm install @flywine93/ngx-notification --save2.You need install @flywine93/ngx-autounsubscrb npm …

01-go安装

01-go安装 本教程适用于linux发行版安装。 当前系统使用的是linux mint 19.ubuntu deepin 等同理。 下载安装包 下载地址 go downloads。 选择Linux包点击下载。 开始安装 1.设定安装目录 在下载好的压缩包文件夹内打开终端,并设置安装目录环境变量&#xff0c…

02-go的IDE安装

02-go的IDE安装 此篇文章是在go已经安装的前提下进行的,如果go还没有安装请参考这篇文章 01-go安装。 本文章使用的是vscode作为go IDE,所以需要提前安装好vscode,并且是在linux系统下。 当前系统为linux mint 19,ubuntu deepin…

03-go的包管理

03-go的包管理 在Go 1.11和1.12版本时就已经支持了对包管理功能,但还是相对有一些小的问题,不过在后续的版本中已经陆续解决。增加包管理是必然趋势,一门好的语言,不光要有好的生态,优美的语法,包管理也是必不可缺的功能,例如大名鼎鼎 npm,就连 C++ 也要推出包管理,好…

04-go命令使用

04-go命令使用 此篇文章是基于GO 1.14.1,如果版本相差过大,还是以版本的命令为准。 命令简介 bug—用于提交使用过程中的bug。build—用于构建二进制可执行文件。clean—用于删除在构建过程中生成的临时文件。doc—用于生成项目文档。env—查看go的环境变量。fix—把指定代…

go设计模式之代理模式

go设计模式之代理模式 代理模式的基本思想是,需要服务的代码只与代理类打交道,而实际工作的部分隐藏在代理的背后。它的主要的目的是希望隐藏实现的部分,从而消除代码的耦合。 举个例子来说就是像电脑桌面的快捷方式。电脑对某个程序提供一个快捷方式(代理对象),快捷方…

go设计模式之单例模式

在这里插入图片描述# go设计模式之单例模式 在软件开发时,经常会遇到有些对象需要保证只有一个实例的,那么这种设计模式就应用而生。 定义 单例模式,也叫单子模式,是一种常用的软件设计模式,属于创建型模式的一种。在应用这个模式时,单例对象的类必须保证只有一个实例…

go设计模式之装饰器模式

go设计模式之装饰器模式 再写这篇文章时,我已经看了很多其他人发表的类似文章,大概看了这么多吧。 亓斌的设计模式-装饰者模式(Go语言描述)jeanphorn的Golang设计模式之装饰模式七八月份的太阳的Golang装饰器设计模式(九)我个人都不是很满意,所以才自己从头开始写关于go语…

go切片窥探

go切片窥探 切片(slice)是对数组一个连续片段的引用(该数组我们称之为相关数组,通常是匿名的),所以切片是一个引用类型(因此更类似于C/C++中的数组类型,或者Python中的list类型)。这个片段可以是整个数组,或者是由起始和终止索引标识的一些项的子集。需要注意的是,…

go反射机制与类型识别

go反射机制与类型识别 在写 go 程序的时候,难免会遇到使用反射机制获取一些结构体或者变量的动态类型,java 和 C# 高级编程语言提供了很好的反射机制,但是在 C 语言中基本是不存在的,C++ 需要有很多语法糖来实现反射,但是技术要求很高,go 语言虽然没有泛型,单是基本的反…

go反射实战之数组的查找Find过滤Filter函数实现

go反射实战之数组的查找过滤函数实现 在使用的go的时候,如果想要在数组中查找一个元素每次都要写一个循环来查找,过滤也是一样,没有一个能打的函数来帮助我们干这些事情,通过前面的学习,我们可以通过反射实现Find和Filter函数。 上篇文章连接 go反射机制与类型识别。 在…

go利用反射实现任意类型切片删除元素

go利用反射实现任意类型切片删除元素 在使用Go切片的时候,我们经常会需要删除切片内的元素,但是由于类型的限制,导致我们需要写很多类似的函数,那么下面我们通过go的反射机制实现一个任意类型的切片元素删除。 这里只是讲如何实现的教程,同类型还有很多函数我们可以实现…

go实现数组切片洗牌函数Shuffle

go实现数组切片洗牌函数Shuffle 在深度学习、机器学习中,我们经常会使用到一个叫 Shuffle 函数,我一般叫打乱函数,也有人叫 洗牌 函数,就是听着高级点, 它可以帮助我们打乱数据集,那么在go中我们如何实现一个呢? 大家可以直接使用我写的一个工具库 lodago,有点lodash…

go validator使用教程

go validator使用教程 很多时候在B/S开发过程中,经常会遇到对参数的校验工作,一般客户端需要提前验证一次提交的数据是否合理,以减少后端的压力,而后端是必须要对数据做验证的。 一般验证的方式大多都是if-else,这种方式会让你掉入无底的深渊,就像下面一样。 [图片来源…

DeepL与有道翻译对比

DeepL与有道翻译对比 近期有一个叫DeepL的翻译工具很火。DeepL Translator 是于2017年8月由 DeepL GmbH(一家由Linguee支持的创业公司)推出的翻译服务,支持汉语、英语、德语、法语、日语、西班牙语、意大利语、荷兰语及波兰语之间的翻译。其…

golang代理转发基础

golang代理转发基础 go标准库已经实现了一个反向代理工具,通过代理将客户端的请求转发到代理服务器。 什么是反向代理? 维基百科解释: ”In computer networks , a reverse proxy is a type of proxy server that retrieves resources on behalf of a client from one or…

使用Go和WebSockets构建实时聊天服务器

使用Go和WebSockets构建实时聊天服务器 源代码连接 Go Chat 现在web应用变得越来越复杂,前端开发人员的工资也是水涨船高。现在的web程序有些是可以实时更新的,用户无需主动调用服务器或刷新浏览器。在早期,开发人员需要依靠ajax请求来创建非常接近实时的应用程序,现在他们…

如何更新Postgresql的Jsonb数组

如何更新Postgresql的Jsonb数组 假设你决定将数据以json或者jsonb的形式存储在数据库中,然后发现你刚刚给自己制造了新的问题,而这些问题是以前没有的。 jsonb是一个强大的工具,但它也有一定的代价,因为你需要调整查询和处理数据…

golang操作postgresql数据库jsonb类型

golang操作postgresql数据库jsonb类型 本文以案例为主,少言,自悟。 推荐一个测试sql的网站 SQL操作 // 创建一个带有jsonb列的表 CREATE TABLE items (id SERIAL PRIMARY KEY,attrs JSONB );// 插入一条数据 INSERT INTO items (attrs)