Tôi là người mới trong RxSwift và cần trợ giúp rất cơ bản.
Giả sử rằng tôi có một Đài quan sát và đăng ký nó như thế này.Phát hiện sự kiện theo cách thủ công trong RxSwift
let source: Observable<Void> = Observable.create { [weak self] observer in
guard let _ = self else {
observer.on(.Completed)
return NopDisposable.instance
}
observer.on(.Next())
return AnonymousDisposable {
}
}
Và đăng ký như thế này:
source.subscribeNext {() -> Void in
}
Câu hỏi đặt ra là: làm thế nào tôi có thể phát ra sự kiện để subscribeNext bằng tay mỗi khi tôi cần. Điều này giống như hành vi rx_tap
trên UIButton
.
Tôi thấy trong mã ví dụ có một cái gì đó như thế này source = button.rx_tap.asObservale()
. Sau đó, mỗi lần người dùng chạm vào nút, sẽ phát ra một sự kiện và kích hoạt trên subscribeNext(). Tôi cũng muốn có hành vi đó nhưng theo lập trình, không phải từ sự kiện giao diện người dùng.
Hi @tomahh, giải pháp của bạn. Tuy nhiên, lý do gì bạn đề cập đến nó là 'không phải là cách được đề nghị'? Và cách so sánh nó với '' 'AnyObserver' ''. ' 'beginLoad = AnyObserver (eventHandler: {(sự kiện) -> Void trong print (" 1234543 ") })' 'beginLoad.on (.Next())' –
user1066518
Với '' 'AnyObserver <>' '', chúng ta có thể sử dụng nó như:
'var beginLoad: AnyObserver
Ngoài ra '' 'PublishSubject()' '' không phải là '' 'Quan sát''', vì vậy chúng ta không thể sử dụng toán tử trên đó (san phẳng, concat ....). –
user1066518
Bạn có thể gọi 'asObservable() 'trên đối tượng để lấy nó như là một' Observable'. – tomahh