Sono un principiante in RxSwift e ho bisogno di un aiuto di base.
Suppongo di avere un osservabile e di iscriverlo in questo modo.Emettere un evento manualmente in 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 {
}
}
E la sottoscrizione in questo modo:
source.subscribeNext {() -> Void in
}
la domanda è: come posso emettere l'evento per subscribeNext manualmente ogni volta che ho bisogno. Questo è come il comportamento rx_tap
su UIButton
.
Vedo nell'esempio codice ha qualcosa di simile a questo source = button.rx_tap.asObservale()
. Successivamente, ogni volta che l'utente tocca il pulsante, verrà emesso un evento e attivato su subscribeNext(). Voglio anche avere quel comportamento, ma in modo programmatico, non dall'evento UI.
Hi @tomahh, La soluzione funziona. Tuttavia, qual è la ragione per cui l'hai menzionata come "non consigliata"? E che ne dici di quando confrontarlo con '' 'AnyObserver' ''. ' 'beginLoad = AnyObserver (EventHandler:? {(Evento) -> Void in di stampa (" 1234543 ") ' beginLoad.on (.Next()) ' –
user1066518
Con '' 'AnyObserver <>' '', possiamo usarlo come:
'var beginLoad: AnyObserver
Anche questo' '' PublishSubject() '' 'non è un' '' Osservabile''', quindi non possiamo usare gli operatori su di esso (appiattito, concat ....). –
user1066518
Puoi chiamare 'asObservable()' sul soggetto per ottenerlo come 'Osservabile'. – tomahh