美文网首页
RxSwift -- 变换

RxSwift -- 变换

作者: yww | 来源:发表于2017-09-20 12:52 被阅读11次

如果我们想对获取到的事件进行转换, 我们就需要变换, 例如将一个数字变为字符

map

和数组的 map 类似,可以将类型进行转换

Observable.from([1,2,3,4,5])
    .map{"num is :\($0)"}
    .subscribe { (event) in
    self.print(event)
    }.disposed(by: disposeBag)

flatMap

flatMap 可以将一个一个可观察者对象转换为另一个, 例如, 你在某种情况下返回失败你可以这样

Observable.of(1,2,3,4,5)
    .flatMap{ $0 == 3 ? Observable<Int>.error(RxError.unknown) : Observable<Int>.just($0) }
    .subscribe { (event) in
        self.print(event)
    }.disposed(by: disposeBag)

scan

scan 类似于序列的 reduce 操作, 不同的是, 他会把每次的值都发送出来

Observable.of(1,2,3,4,5)
    .scan(0) { $0 + $1 }
    .subscribe { (event) in
        self.print(event)
    }.disposed(by: disposeBag)

输出 1, 3, 6, 10, 15

相关文章

网友评论

      本文标题:RxSwift -- 变换

      本文链接:https://www.haomeiwen.com/subject/aoansxtx.html