2016-03-25 1 views
0

Ich möchte das Ereignis drosseln, das von einem EventProducerType des SwiftBond Frameworks erzeugt wird.Drosselungsereignis von EventProducerType erzeugt - Swift Bond

Hier ist, wie ich teste, wie ein Ereignis zu drosseln:

var throttledObserver: EventProducer<String?>! 

init() { 
    throttledObserver = Observable<String?>(nil).throttle(1000, queue: Queue.Main)  

    throttledObserver.observeNew { text in 
    // This is always printed no matter how large the throttle time interval is 
    print(text) 
    } 
} 

// UISearchBarDelegate method 
func searchBar(searchBar: UISearchBar, textDidChange searchText: String) { 
    throttledObserver.next(searchText) 
} 

Mit diesem Ansatz gibt es keine Drosselung und der Text gedruckt wird, unmittelbar nach dem Text zu ändern. Mein Ziel ist es, den Suchtext einer UISearchBar zu drosseln, um Netzwerkanforderungen zum Abrufen einiger Daten von einem Endpunkt zu stellen.

+0

Ich habe es mit dem folgenden arbeiten: –

Antwort

0

Ich habe es mit dem folgenden arbeiten:

var throttledObserver = Observable<String?>! 

init() { 
    throttledObserver = Observable<String?>(nil) 

    // the key is not to save the returned value from throttle into a variable, but to set the observation immediately 
    throttledObserver.throttle(1000, queue: Queue.Main) 
    .observeNew { text in 
     print(text) 
    } 
} 

// UISearchBarDelegate method 
func searchBar(searchBar: UISearchBar, textDidChange searchText: String) { 
    throttledObserver.next(searchText) 
} 
Verwandte Themen