我是rxSwift的新手。创建Observable时我发现了一些区别
Observable.of
和Observable<String>.create
Observable<String>.create { observer in
observer.onNext("1")
observer.onNext("2")
return Disposables.create()
}.take(3).toArray().subscribe(onNext: { (item) in
print(item)
}).disposed(by: disposeBag)
未发出的util至少收到3个事件。通过这种方式,观察者从未发射过。 但是:
Observable.of("1", "2")
// 2
.take(3).toArray()
.subscribe(onNext: {
print($0) })
.disposed(by: disposeBag)
但是当我以这种方式创造时。 即使我只有2个元素,Observer总是会发出。 我不知道有什么区别。
答案 0 :(得分:2)
主要区别在于of
也会发送已完成的事件。您可以查看下面的示例,第二个“已完成”将不会被调用。
您必须在observer.onCompleted()
之后编写observer.onNext("2")
才能拥有相同的逻辑。
Observable.of("1", "2").subscribe(onCompleted: {
print("completed")
})
Observable<String>.create { observer in
observer.onNext("1")
observer.onNext("2")
return Disposables.create()
}
.subscribe(onCompleted: {
print("completed")
})