微信网站建设哪家好,wordpress菜单加粗,电子商务网店运营,微信视频号怎么推广引流简介 git地址: https://github.com/ReactiveX/RxSwift参考资料:http://t.swift.gg/d/2-rxswiftReactiveX是通过可观察的流实现异步编程的一种API#xff0c;它结合了观察者模式、迭代器模式和函数式编程的精华#xff0c;RxSwift 是 ReactiveX 编程思想的一种实现。
复制代码…简介 git地址: https://github.com/ReactiveX/RxSwift参考资料:http://t.swift.gg/d/2-rxswiftReactiveX是通过可观察的流实现异步编程的一种API它结合了观察者模式、迭代器模式和函数式编程的精华RxSwift 是 ReactiveX 编程思想的一种实现。
复制代码subscribe 订阅,是连接观察者和被观察者的操作符. public func subscribe(on: (event: RxSwift.EventSelf.E) - Void) - Disposable 就是说我们接收到的是事件在这里一般通过 switch case 获取对应结果。 let sequenceOfInts PublishSubjectInt()_ sequenceOfInts.subscribe {print($0)
}sequenceOfInts.on(.Next(1))
sequenceOfInts.on(.Completed)
复制代码subscribeNext 指订阅next事件. public func subscribeNext(onNext: (Self.E) - Void) - Disposable 因为只有一种事件这里的 API 传入的就是事件中包含的具体的值了。 let sequenceOfInts PublishSubjectInt()_ sequenceOfInts.subscribeNext {print($0)
}sequenceOfInts.on(.Next(1))
sequenceOfInts.on(.Completed)
复制代码subscribeCompleted / subscribeError 只订阅完成/错误事件. subscribeOnnextOnErrorOnCompleted public func subscribe(onNext onNext: (Self.E - Void)? default, onError: (ErrorType - Void)? default, onCompleted: (() - Void)? default, onDisposed: (() - Void)? default) - Disposable takeUntil 当另一个序列开始发射值时忽略原序列发射的值。 let originalSequence PublishSubjectInt()
let whenThisSendsNextWorldStops PublishSubjectInt()_ originalSequence.takeUntil(whenThisSendsNextWorldStops).subscribe {print($0)
}originalSequence.on(.Next(1))
originalSequence.on(.Next(2))
originalSequence.on(.Next(3))whenThisSendsNextWorldStops.on(.Next(1))originalSequence.on(.Next(4))
复制代码takeWhile 跟filter类似,filter 和 takeWhile 什么时候更能清晰表达你的意思就用哪个。 let sequence PublishSubjectInt()_ sequence.takeWhile { $0 4 }.subscribe {print($0)
}sequence.on(.Next(1))
sequence.on(.Next(2))
sequence.on(.Next(3))
sequence.on(.Next(4))
sequence.on(.Next(5))
复制代码amb 处理多个序列,只会关心多个序列中最先发送数据的序列,其他序列会被忽略. let intSequence1 PublishSubjectInt()
let intSequence2 PublishSubjectInt()
let intSequence3 PublishSubjectInt()let _ [intSequence1, intSequence2, intSequence3].amb().subscribe {print($0)
}intSequence2.onNext(10) // intSequence2 最先发射
intSequence1.onNext(1)
intSequence3.onNext(100)
intSequence1.onNext(2)
intSequence3.onNext(200)
intSequence2.onNext(20)let intSequence1 PublishSubjectInt()
let intSequence2 PublishSubjectInt()let _ intSequence1.amb(intSequence2).subscribe { // 只用于比较两个序列print($0)
}intSequence2.onNext(10) // intSequence2 最先发射
intSequence1.onNext(1)
intSequence1.onNext(2)
intSequence2.onNext(20)复制代码concat 将两个序列合并成一个序列当一个序列中的所有元素成功发射完成之后才会发射另一个序列中的元素。 在第一个序列发射完成之前第二个序列发射的事件都会被忽略但会接收第一个序列发射完成前第二个序列发射的最后一个事件。 注 如有侵权,请告知删除. 转载于:https://juejin.im/post/5ab1ee7a518825555c1d887a