RXSwift学习系列之一

前言及规划

最近准备学下RXSwift,期许接下来时间 ,能学习了解RxSwift,一方面学习,一方面分享.

简介

RxSwift就是ReactiveX的Swift版本,所以我们先从ReactiveX(简称Rx)官方首页看起(reactivex官网),看看是怎么解释Rx,有这么一句话

ReactiveX is a combination of the best ideas from
the Observer pattern, the Iterator pattern, and functional programming

“Observer”、“Iterator”、“Functional programming”,这三个专用名词,每一个都是很深的知识,我们就先了解下Observer. 那就是说会有一个被观察者(Observable)和多个观察者(Observer),当Observable状态发生改变,Observer就能收到通知,那在Rx中,Observables是Rx的核心,那接下来花些时间来学习下是什么是Observable,怎么创建它和使用它。

Obserable是什么?

在这里插入图片描述
Observable就具有特殊功能的序列(sequence),Observable作为RxSwift的基础,是一切的根基。

1111从左到右的箭头代表时间,带编号的圆圈代表序列的元素。 元素 1 被发送,经过一段时间后,是 2
和 3 将被发送。

Obserable生命周期

在这里插入图片描述1

这个 Observable 发出三个点击事件之后结束。 竖线代表.completed event,这被称为一个完成的事件,已被终止,不能有任何事件再发出。
在这里插入图片描述
红叉代表Observable 发出了一个错误事件。Observable它也被终止并且不能再发出任何其他事件。

再次强调,当发送.completed跟.error后,Observable就会结束(Terminated),此时任务已完成

如何创建Obserable

1: 使用 just 方法创建

let one = 1
let two = 2
let three = 3
let observable1: Observable<Int> = Observable<Int>.just(one)

2: 使用of 方法创建

let observable2 = Observable.of(one, two, three)

3: 使用from 方法创建

let observable3 = Observable.from([one, two, three])

订阅Obserable

订阅Obserable和Swift标准库Iterator中的调用next()方法很像,如:

let sequence = 0..<3
var iterator = sequence.makeIterator()
while let n = iterator.next() {
print(n)

/* Prints:
 0
 1
 2
 */

那我们来看下如何订阅Obserable

    let one = 1
    let two = 2
    let three = 3
    let observable = Observable.of(one,two,three)
    let disposeBag = DisposeBag()
    observable
        .subscribe(onNext: { element in
            print(element)
        }, onError: { error in
            print(error)
        }, onCompleted: {
            print("onCompleted")
        }, onDisposed: {
            print("onDisposed")
        })
        .disposed(by: disposeBag)


当订阅者收到Observable发出的.next、.error、.completed事件时,会执行定义好的代码,执行结果如下:

1
2
3
onCompleted
onDisposed

今天主要学习了Obserable以及如何创建及订阅它,后来还有更多的内容,我会一一学习并分享给大家。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值