2017-05-29 1 views
0

J'apprends RxSwift, ce que je voudrais réaliser est d'obtenir le mécanisme qui m'imprime text de UITextFied, mais après l'intervalle donné. Comment ça marche maintenant: quand je tape le premier caractère, ce caractère est immédiatement imprimé (pas après combien de temps je m'attendais) et si je continue à taper une longue phrase, text est imprimé toutes les deux secondes (comme l'intervalle est réglé dans throttle), mais je voudrais avoir seulement la dernière valeur text.RxSwift étranglement comment obtenir seulement la dernière valeur du flux

Mon code:

inputField.rx.text.orEmpty 
     .throttle(2, latest: true, scheduler: MainScheduler.instance) 
     .subscribe(onNext: { text in 
      print("\(text)") 
     }, onDisposed: nil) 
     .addDisposableTo(disposeBag) 

Im la recherche de votre aide :) Fellows Rx Merci

Répondre

3

Utilisez debounce au lieu de throttle.

De la documentation pour debounce:

Ignore éléments d'une séquence observable qui sont suivies par un autre élément dans un intervalle de temps spécifié par rapport à l'aide du planificateur indiqué pour exécuter des minuteries d'étranglement.

De la documentation de throttle.

Renvoie un Observable qui émet le premier et le dernier élément émis par la source Observable pendant des fenêtres temporelles successives d'une durée spécifiée .

+0

parfait, merci! – Robert