[英]How do I initialize an observable property in RxSwift?
您可以通過多種方式創建流:
主要方式
Observable<Int>.create { observer -> Disposable in
// Send events through observer
observer.onNext(3)
observer.onError(NSError(domain: "", code: 1, userInfo: nil))
observer.onCompleted()
return Disposables.create {
// Clean up when stream is deallocated
}
}
快捷鍵
Observable<Int>.empty() // Completes straight away
Observable<Int>.never() // Never gets any event into the stream, waits forever
Observable<Int>.just(1) // Emit value "1" and completes
通過主題 (ReactiveSwift中的Property
/ MutableProperty
)
Variable
在RxSwift 4中已棄用,但它只是BehaviourSubject的一個包裝器,因此您可以使用它。
有2個最常用的科目
BehaviorSubject
- 它將發出當前值和即將發布的值。 因為它將發出當前值,所以需要使用值BehaviorSubject<Int>(value: 0)
初始化它
PublishSubject
- 它將發出即將到來的值。 初始化PublishSubject<Int>()
不需要初始值
然后你可以在主題實例上調用.asObservable()
來獲得一個observable。
當我正在學習RxSwift時,我跑了這個帖子。 您可以初始化一個可觀察的屬性,如下所示:
var age = Variable<Int>(5)
並將其設置為可觀察的:
let disposeBag = DisposeBag()
private func setupAgeObserver() {
age.asObservable()
.subscribe(onNext: {
years in
print ("age is \(years)")
// do something
})
.addDisposableTo(disposeBag)
}
在RxSwift中,不推薦使用Variable
。 使用BehaviorRelay
或BehaviorSubject
在Rx中,通常有一個BehaviorSubject存儲最后一個值
特別是在RxSwift中,還有Variable,它是BehaviorSubject的包裝器
在這里看到兩者的描述 - https://github.com/ReactiveX/RxSwift/blob/master/Documentation/GettingStarted.md
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.