Debounce vs Throttle: в чём разница и реализуй throttle
Задача
Дан дебаунсер. Объясни, чем debounce отличается от throttle, найди слабые места в коде и напиши Throttler.
final class Debouncer {
private let delay: TimeInterval
private let queue: DispatchQueue
private var workItem: DispatchWorkItem?
init(delay: TimeInterval, queue: DispatchQueue = .main) {
self.delay = delay
self.queue = queue
}
func run(_ action: @escaping () -> Void) {
workItem?.cancel()
let item = DispatchWorkItem(block: action)
workItem = item
queue.asyncAfter(deadline: .now() + delay, execute: item)
}
}
Продолжение ответа с кодом и уточняющими вопросами интервьюера — в приложении DevPrep.
Полный ответ — в DevPrep