(六)RxSwift之创建操作符(create)

228 阅读2分钟

RxSwift文档上给出的操作符将近60个,这篇来看一下和Observable创建有关的。

操作符 描述
create 创建一个完整的 Observable可以发送nexterrorcompleted事件
empty 创建一个空Observable,只有一个completed事件
never 创建一个 Observable,这个 Observable 不会产生任何事件
repeatElement 创建 Observable 重复的发出同一个元素
from 将其他类型(array,Sequence)转换为 Observable
of 将其他类型(elements)转换为 Observable
  • create

通过一个构建函数完整的创建一个 Observable,在构建函数里面描述事件(next,error,completed)的产生过程。

示例:创建一个 [0, 1, 2] 的序列:

let observable = Observable<Int>.create { observer in
    observer.onNext(0)
    observer.onNext(1)
    observer.onNext(2)
    observer.onCompleted()
    return Disposables.create()
}
  • empty

创建一个空Observable,只有一个completed事件。

示例:

let id = Observable<Int>.empty()

想当于:

let id = Observable<Int>.create { observer in
    observer.onCompleted()
    return Disposables.create()
}
  • never

创建一个 Observable,这个 Observable 不会产生任何事件。

示例:

let id = Observable<Int>.never()

相当于:

let id = Observable<Int>.create { observer in
    return Disposables.create()
}
  • just

创建 Observable 发出唯一的一个元素

示例: 一个序列只有唯一的元素 0:

let id = Observable.just(0)

相当于:

let id = Observable<Int>.create { observer in
    observer.onNext(0)
    observer.onCompleted()
    return Disposables.create()
}
  • repeatElement

repeatElement 操作符将创建一个 Observable,这个 Observable 将无止尽的发出同一个元素 示例: 创建 Observable 重复的发出某个元素:

let id = Observable.repeatElement(0)

相当于:

let id = Observable<Int>.create { observer in
    observer.onNext(0)
    observer.onNext(0)
    observer.onNext(0)
    observer.onNext(0)
    ... // 无数次
    return Disposables.create()
}
  • from

  • of

在使用 Observable 时,如果能够直接将其他类型转换为 Observable.

示例: 将一个数组转换为 Observable:

let numbers = Observable.from([0, 1, 2])

相当于

let numbers = Observable.from(0, 1, 2)

相当于

let numbers = Observable<Int>.create { observer in
    observer.onNext(0)
    observer.onNext(1)
    observer.onNext(2)
    observer.onCompleted()
    return Disposables.create()
}

of接元素 from接数组或序列