RxSwift 学习笔记第三篇之RxSwift的Observer

目录

前言

一、观察者(Observer)是什么

二、观察者的实现方式

1. 直接订阅

2.分开处理

3.UI绑定

4.取消订阅(Dispose)

1.手动调用dispose()

2.使用DisposeBag自动管理

5.subscribe() 和 bind(to:) 的区别

6.总结

1.subscribe方式:

2.推荐的订阅写法


前言

        RxSwift 的设计基于 观察者模式(Observer Pattern) 和 订阅者模式(Subscriber Pattern),但是更准确的说法应该是 响应式编程 模式,这两种模式是响应式编程的核心思想。

        在 RxSwift 中,没有显式的“订阅者”这一概念。通常情况下,订阅者(Subscriber)是 Rx 编程中的一个通用术语,用于表示接收和处理数据流的实体。但在 RxSwift 中,实际的术语是观察者(Observer)。

        在 RxSwift 中,观察者(Subscriber) 负责接收 Observable(可观察对象) 发送的数据流并对其进行处理。

        没有订阅者时,Observable 不会被触发(Hot Observable 除外)。

一、观察者(Observer)是什么

        观察者是RxSwift 中用于接收数据流事件并进行处理的对象。通常情况下,我们通过 Observable创建数据流,并使用 subscribe() 方法来让观察者订阅这个数据流。一旦数据流中有新的事件产生,观察者就会收到通知,并对数据进行处理。

let observable = Observable.just("Hello, RxSwift!")observable.subscribe { event inprint(event)
}

        控制台输出日志如下:

next(Hello, RxSwift!)
completed

        分析:

        订阅后 Observable 开始执行

        订阅者 subscribe 收到 next 事件,然后 completed

二、观察者的实现方式

        RxSwift提供了三种方式订阅数据流:

1. 直接订阅

        最常见的方式是通过 subscribe 方

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

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

相关文章

DeepSeek(3):DeepSeek R1 提示词⼯程

1 提示词⼯程 5W1H(What, Who, When, Where, Why, How)是⼀种常⽤的信息收集和指令下达的⽅法。以下是根据这个⽅法为DeepSeek R1模型下指令的例⼦,以“学习⼤模型应⽤开发”为例: (1)What(是什…

Linux入门 全面整理终端 Bash、Vim 基础命令速记

Linux入门 2025 超详细全面整理 Bash、Vim 基础命令速记 刚面对高级感满满的 终端窗口是不是有点懵?于是乎,这份手册就是为你准备的高效学习指南!我把那些让人头大的系统设置、记不住的命令都整理成了对你更友好的格式,让你快速学…

RBA+minibatch的尝试

目录 还是咬着牙来写 RBA了 JAX JAX->TORCH torch tensor的变形 pytorch怎么把一个【3,3,5】的tensor变成【3,10,5】,多的用0填充 pytorch如何把shape【100】转成【100,1】 把torch shape【100,1】变成【100】 SQUEEZE grad_fn 不能两次反向传播 还…

Jupyter notebook的安装与使用

jupyter notebook的安装需要在已经安装配置好的conda环境下 win r 打开运行窗口 输入cmd回车 在cmd窗口中输入以下命令 conda install jupyter notebook安装完成后启动 jupyter notebook 也是在cmd窗口 输入 : jupyter notebook运行成功后第一次打开的时候需要选择一个浏览…

如何在Ubuntu上构建编译LLVM和ISPC,以及Ubuntu上ISPC的使用方法

之前一直在 Mac 上使用 ISPC,奈何核心/线程太少了。最近想在 Ubuntu 上搞搞,但是 snap 安装的 ISPC不知道为什么只能单核,很奇怪,就想着编译一下,需要 Clang 和 LLVM。但是 Ubuntu 很搞,他的很多软件版本是…

特殊的数字排序

0特殊的数字排序 - 蓝桥云课 问题描述 小明被挑选去参加一个ACM比赛。他的任务是解决一个很特别的问题:给定一个整数数组,但是只能通过交换任意两个数的方式来排序。听起来很简单对吗?但是这个问题的难点在于,只有某些数字是可以…

汽车感性负载-智能高边钳位能量计算

随着汽车电子技术的发展,新的电子电气架构下,越来越多的执行部件在车身出现,比如电磁阀、风机、水泵、油泵、雨刮继电器等常用的执行器, 它们一般都表现为感性特点。驱动这些负载的最简单和最常见的方法是将它们连接到高边侧开关(…

量化交易学习笔记02:双均线策略

双均线策略示例 个股:中国平安 回测日期:2022-5-1至2023-5-1 短均线:5天 长无线:10天 代码: def initialize(context):# 初始化此策略# 设置我们要操作的股票池, 这里我们只操作一支股票# """标的&qu…

利用余弦相似度在大量文章中找出抄袭的文章

我前面的2篇文章分别讲了如果利用余弦相似度来判断2篇文章的相似度,来确定文章是否存在抄袭,和余弦相似度的原理,即余弦相似度到底是怎么来判断文章的相似性高低的等等。这一篇再说下,对于文章字数多和大量文章时,如果…

在 Kaggle 中绘制中文乱码解决

在 Kaggle 中绘制中文时,需要设置 Matplotlib 的字体,否则中文会显示为乱码。可以使用 SimHei(黑体)或 Microsoft YaHei(微软雅黑)。 解决方案 使用 matplotlib 设置中文字体在 Kaggle 安装 SimHei 字体 …

在 Ubuntu 服务器上使用宝塔面板搭建博客

📌 介绍 在本教程中,我们将介绍如何在 Ubuntu 服务器 上安装 宝塔面板,并使用 Nginx PHP MySQL 搭建一个博客(如 WordPress)。 主要步骤包括: 安装宝塔面板配置 Nginx PHP MySQL绑定域名与 SSL 证书…

Linux线程

1.线程概念 在一个程序里的一个执行路线就叫做线程(thread),更准确定义:线程是一个进程内部的控制序列 进程至少有一个执行路线,线程在进程内部运行,本质是在进程地址空间内运行,在Linux系统中,CPU眼中&a…

【TI MSPM0】GPIO学习

一、文件样例查找 以GPIO软件轮询为例 下面的四个文件夹分别为不同开发环境提供支持 二、工程导入 1.点击file-点击import project 2.点击browse 3.找到对应的文件打开,选择 推荐使用ticlang,能够提供更加优化的效率 点击finish 三、工程学习 1.readme 文件 &a…

二叉树的基本操作与实现:C语言深度剖析

目录 代码整体框架 1. #define _CRT_SECURE_NO_WARNINGS 2. 头文件引入 3. typedef int BTtype; 4. 二叉树节点结构体定义 二叉树的创建 1. BuyNode 函数 2. CreatNode 函数 二叉树的遍历 前序遍历 中序遍历 后序遍历 二叉树属性的计算 节点个…

深入解析 Latent Diffusion Model(潜在扩散模型,LDMs)(代码实现)

深入解析 Latent Diffusion Model:从传统 Diffusion Model 到高效图像生成的进化 近年来,生成模型在图像合成领域取得了显著进展,其中 Diffusion Model(扩散模型,DMs)以其出色的生成质量和理论上的稳健性逐…

线性回归原理推导与应用(五):波士顿房价预测实战

波士顿房价是一个非常经典的多元线性回归入门案例数据集。波士顿房价预测数据集包含了可能会影响房价的十三个因素,并给出了实际的房价(单位为万美元) 波士顿房价数据集数据集下载地址:https://www.kaggle.com/datasets/altavish…

基于CATIA二次开发的低音炮腔体容积精准计算技术详解

一、功能概述 本工具通过PySide6与CATIA V5深度集成,实现了低音炮上下腔体内体积的自动化测量系统。系统采用三维实体建模法进行容积计算,相较于传统手工计算方式,精度提升可达0.5%。主要功能模块包括: 壳体特征自动识别动态草图…

向量数据库原理及选型

向量数据库 什么是向量什么是向量数据库原理应用场景 向量数据库的选型主流向量数据库介绍向量数据库对比主流向量数据库对比表 选型建议 什么是向量 向量是一组有序的数值,表示在多维空间中的位置或方向。向量通常用一个列或行的数字集合来表示,这些数…

IE代理切换器v1.2免费版

虽然IE浏览器已经过时了,但很多其他浏览器,比如谷歌浏览器的代理服务器设置,都还是基于IE浏览器来进行设置的,如果你的工作场景需要切换不同的代理服务器来访问网络,那这款工具适合你,目前该工具可以实现IE…

模运算的艺术:从基础到高阶的算法竞赛应用

在算法竞赛中,模运算(取模运算)是一个非常重要的概念,尤其在处理大数、防止溢出、以及解决与周期性相关的问题时。C 中的模运算使用 % 运算符,但它的行为和使用场景需要特别注意。 1. 模运算的基本概念 模运算是指求一…