RxSwift笔记 - Mathematical and Aggregate Operators

57 篇文章 1 订阅
23 篇文章 0 订阅


Concat

concat 会把多个 Observable 序列合并(串联)为一个 Observable 序列

并且只有当前面一个 Observable 序列发出了 completed 事件,才会开始发送下一个 Observable 序列事件。

concat.png


let subject1 = BehaviorSubject(value: 1)
let subject2 = BehaviorSubject(value: 2)

let variable = Variable(subject1)
variable.asObservable()
    .concat()
    .subscribe(onNext: {
    print($0)
}).disposed(by: disposeBag)

subject2.onNext(2)
subject1.onNext(1)
subject1.onNext(2)
subject1.onNext(3)
subject1.onCompleted()

variable.value = subject2
subject2.onNext(3)
subject2.onNext(4)
subject2.onCompleted()

/*
 1
 1
 2
 3
 2
 3
 4
 */

toArray

该操作符先把一个序列转成一个数组,并作为一个单一的事件发送,然后结束

to.c.png

Observable.of(1, 2, 3, 4, 5)
    .toArray()
    .subscribe(onNext: { print($0) })
    .disposed(by: disposeBag)

/*
[1, 2, 3, 4, 5]
 */

Reduce

持续的将 Observable 的每一个元素应用一个函数,然后发出最终结果

reduce 接受一个初始值,和一个操作符号

reduce 将给定的初始值,与序列里的每个值进行累计运算。得到一个最终结果,并将其作为单个值发送出去

reduce.png

Observable.of(1, 2, 3, 4, 5)
    .reduce(0, accumulator: + )
    .subscribe(onNext: { print($0) })
    .disposed(by: disposeBag)

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值