Jestem nowicjuszem w RxSwift i potrzebuję bardzo podstawowej pomocy.
Załóżmy, że mam Obserwowalne i subskrybuję to w ten sposób.Emituj zdarzenie ręcznie w 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 {
}
}
I subskrybować tak:
source.subscribeNext {() -> Void in
}
Pytanie brzmi: w jaki sposób można emitować zdarzenia do subscribeNext ręcznie za każdym razem muszę. Jest to podobne do zachowania rx_tap
na UIButton
.
Widzę w przykładowym kodzie coś takiego: source = button.rx_tap.asObservale()
. Następnie, za każdym razem, gdy użytkownik kliknie przycisk, emituje zdarzenie i wywołuje funkcję subscribeNext(). Też chcę mieć to zachowanie, ale programowo, nie ze zdarzenia UI.
Hi @tomahh, Twoje rozwiązanie działa. Jaka jest jednak przyczyna, dla której wspomniałeś o tym, że nie jest to zalecany sposób? A co powiesz na temat porównania z '' 'AnyObserver' ''. ' 'beginLoad = AnyObserver (Podprogram: {(event) -> Pustki w print (” 1234543 ") })' 'beginLoad.on (.Next())' –
user1066518
Z '' 'AnyObserver <>' '', możemy użyć go lubię:
'var beginLoad: AnyObserver
Także '' PublishSubject() '' 'nie jest' '' Observable''', więc nie możemy używać operatorów na nim (spłaszcz, konkat ....). –
user1066518
Możesz wywołać 'asObservable()' na obiekcie, aby uzyskać go jako 'Observable'. – tomahh