From 1f36acc084b39491090aa885e8db37a1662e6e50 Mon Sep 17 00:00:00 2001 From: Martin Boehm Date: Thu, 1 Feb 2018 12:26:12 +0100 Subject: [PATCH] Reuses existing timer in tickAndDebounce --- blockbook.go | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/blockbook.go b/blockbook.go index 6db7b5e2..b081d25f 100644 --- a/blockbook.go +++ b/blockbook.go @@ -193,20 +193,21 @@ func tickAndDebounce(tickTime time.Duration, debounceTime time.Duration, input c timer := time.NewTimer(tickTime) Loop: for { - timerChan := timer.C select { case _, ok := <-input: - timer.Stop() - // exit loop on closed channel + if !timer.Stop() { + <-timer.C + } + // exit loop on closed input channel if !ok { break Loop } // debounce for debounceTime - timer = time.NewTimer(debounceTime) - case <-timerChan: + timer.Reset(debounceTime) + case <-timer.C: // do the action and start the loop again f() - timer = time.NewTimer(tickTime) + timer.Reset(tickTime) } } }