执行后,下面的代码将打印两次“订阅”。为什么? RxSwift 5.0
import UIKit
import RxSwift
class ViewController: UIViewController {
let data = Data(repeating: 100, count: 1_000_000_000_0)
override func viewDidLoad() {
super.viewDidLoad()
let disposeBag = DisposeBag()
Observable<Data>
.from(data)
.subscribe( { _ in print("subscribe") } )
.disposed(by: disposeBag)
}
}
答案 0 :(得分:0)
subscribe中的闭包被称为onNext和onCompleted事件,这就是为什么打印两次的原因
答案 1 :(得分:0)
这是正确的行为。您正在创建一个仅包含一个值的Observable,该值会导致两个事件触发:
我怀疑您所关注的是第一个(下一个)事件。从以下位置更改代码:
Observable<Data>
.from(data)
.subscribe( { _ in print("subscribe") } )
.disposed(by: disposeBag)
收件人:
Observable<Data>
.from(data)
.subscribe(onNext: { _ in print("subscribe") } )
.disposed(by: disposeBag)
这将仅向您提供包含Data对象的Next事件。