Skip to content

Instantly share code, notes, and snippets.

@xuanzi23
Created April 2, 2021 02:20
Show Gist options
  • Save xuanzi23/9362f8a8dfe1e66e770c4de58ee0ee46 to your computer and use it in GitHub Desktop.
Save xuanzi23/9362f8a8dfe1e66e770c4de58ee0ee46 to your computer and use it in GitHub Desktop.
import Foundation
class Debouncer: NSObject {
var callback: (() -> ())
var delay: Double
weak var timer: Timer?
init(delay: Double, callback: @escaping (() -> ())) {
self.delay = delay
self.callback = callback
}
func call() {
timer?.invalidate()
let nextTimer = Timer.scheduledTimer(timeInterval: delay, target: self, selector: #selector(Debouncer.fireNow), userInfo: nil, repeats: false)
timer = nextTimer
}
@objc func fireNow() {
self.callback()
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment