ReactiveCocoa 4 - 延迟和过滤信号事件

时间:2016-08-24 20:32:37

标签: ios swift mvvm reactive-cocoa reactive-cocoa-4

我正在使用ReactiveCocoa 4实现搜索文本字段,并希望在X时间内没有输入文本后才点击搜索API。我之前通过取消先前安排的并在textDidChange委托方法中触发“executeSearch”选择器来完成此操作。这确保了每次键入时,任何先前安排的“executeSearch”选择器都会被取消,而新的选择器将被安排在X秒内触发。

我现在想要做同样的行为,但是从绑定到输入文本的信号生成器。我目前的实施很接近,但不一样。此行为仅限制文本输入事件仅每0.5秒触发一次,而不是取消上一个事件。

searchTextInput.producer.delay(0.3, onScheduler: RACScheduler.currentScheduler())
                        .throttle(0.5, onScheduler: RACScheduler.currentScheduler())
                        .producer.startWithNext({ [unowned self] searchText in
                           self.executeSearch(searchText)
                        })

我很难通过ReactiveCocoa 4文档筛选知道我应该使用哪些信号函数!谢谢!

1 个答案:

答案 0 :(得分:1)

您需要使用DateSchedulerType。例如:

this.subscription = this.candidateService.getCandidates()
                        .subscribe(...);

此外,您可以将executeSearch编写为SignalProducer,并使用flatMap(.Latest)创建信号链。

并且不要忘记使用mainQueueSheduler来获取结果到UI