节流器 1.1.0

节流器 1.1.0

Dennis Chhay 维护。



节流器 1.1.0

  • Dennis Chhay

节流器

节流器是一个组件对象,可用于调节执行过程的速度。

可以使用闭包轻松定义进程。您还可以自定义延迟时间,甚至更改其调度队列。

为什么不直接使用 RxSwift?

这个库被打造成了一个简单的小组件。您无需学习复杂的语法。函数被设计为具有少量的输入,使您的代码更简洁。

如何使用?

通过创建一个节流器实例,你可以在闭包中定义一个过程,并根据需要自定义时间。设置完成后,只需在节流器实例上调用throttle()即可。

示例

假设你希望在输入UISearchBar时自动发送搜索请求,但又不想对每个按键按下都发送请求。作为一个负责任的开发者,你想要对搜索进行节流。这可以使用以下方式轻松实现。

func commonInit() {
    let delay: TimeInterval = 0.5
    let dispatchQueue = DispatchQueue.main
    let dispatchBlock = { [weak self] in
        guard let strongSelf = self,
              let searchString = strongSelf.searchBar.text else {
                  return
        }
        strongSelf.searchService.search(searchString)// send search request
     }
    throttler = Throttler(delay: delay, dispatchQueue: dispatchQueue, dispatchBlock: dispatchBlock)
}

func searchBar(_ searchBar: UISearchBar, textDidChange searchText: String) {
    // We don't want to send a search request for every character typed.
    // But using the throttler, it will fire off only after the delay time.
    throttler.throttle()
}

func searchBarSearchButtonClicked(_ searchBar: UISearchBar) {
    // But we can also fire off immediately
    throttler.fire()
}