debouncer: add new debounce methods

This commit is contained in:
William Casarin
2024-01-16 16:03:10 -08:00
parent 6edb3b1a40
commit 89e01d823a

View File

@@ -24,4 +24,30 @@ class Debouncer {
workItem = DispatchWorkItem { action() }
queue.asyncAfter(deadline: .now() + interval, execute: workItem!)
}
func debounce_immediate(action: @escaping () -> Void) {
guard self.workItem == nil else {
return
}
self.workItem = DispatchWorkItem(block: {
self.workItem = nil
})
action()
queue.asyncAfter(deadline: .now() + interval, execute: self.workItem!)
}
func debounce_once(action: @escaping () -> Void) {
guard self.workItem == nil else {
return
}
self.workItem = DispatchWorkItem(block: {
self.workItem = nil
action()
})
queue.asyncAfter(deadline: .now() + interval, execute: self.workItem!)
}
}