-
Notifications
You must be signed in to change notification settings - Fork 0
/
debounce_examples_test.go
132 lines (115 loc) · 3.83 KB
/
debounce_examples_test.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
package debounce_test
import (
"fmt"
"time"
"github.com/romdo/go-debounce"
)
func ExampleNew() {
// Create a new debouncer that will wait 100 milliseconds since the last
// call before calling the callback function.
debounced, _ := debounce.New(100*time.Millisecond, func() {
fmt.Println("Hello, world!")
})
debounced()
time.Sleep(75 * time.Millisecond) // +75ms = 75ms
debounced()
time.Sleep(75 * time.Millisecond) // +75ms = 150ms
debounced()
time.Sleep(150 * time.Millisecond) // +150ms = 300ms, wait expired at 250ms
debounced()
time.Sleep(75 * time.Millisecond) // +75ms = 675ms
debounced()
time.Sleep(75 * time.Millisecond) // +75ms = 750ms
debounced()
time.Sleep(150 * time.Millisecond) // +150ms = 900ms, wait expired at 850ms
// Output:
// Hello, world!
// Hello, world!
}
func ExampleNew_with_cancel() {
// Create a new debouncer that will wait 100 milliseconds since the last
// call before calling the callback function.
debounced, cancel := debounce.New(100*time.Millisecond, func() {
fmt.Println("Hello, world!")
})
debounced()
time.Sleep(75 * time.Millisecond) // +75ms = 75ms
debounced()
time.Sleep(75 * time.Millisecond) // +75ms = 150ms
debounced()
time.Sleep(150 * time.Millisecond) // +150ms = 300ms, wait expired at 250ms
debounced()
time.Sleep(75 * time.Millisecond) // +75ms = 375ms
debounced()
time.Sleep(75 * time.Millisecond) // +75ms = 450ms
cancel()
time.Sleep(150 * time.Millisecond) // +150ms = 600ms, canceled at 450ms
debounced()
time.Sleep(75 * time.Millisecond) // +75ms = 675ms
debounced()
time.Sleep(75 * time.Millisecond) // +75ms = 750ms
debounced()
time.Sleep(150 * time.Millisecond) // +150ms = 900ms, wait expired at 850ms
// Output:
// Hello, world!
// Hello, world!
}
func ExampleNewWithMaxWait() {
// Create a new debouncer that will wait 100 milliseconds since the last
// call before calling the callback function. On repeated calls, it will
// wait no more than 500 milliseconds before calling the callback function.
debounced, _ := debounce.NewWithMaxWait(
100*time.Millisecond, 500*time.Millisecond,
func() { fmt.Println("Hello, world!") },
)
debounced()
time.Sleep(75 * time.Millisecond) // +75ms = 75ms
debounced()
time.Sleep(75 * time.Millisecond) // +75ms = 150ms
debounced()
time.Sleep(75 * time.Millisecond) // +75ms = 225ms
debounced()
time.Sleep(75 * time.Millisecond) // +75ms = 300ms
debounced()
time.Sleep(75 * time.Millisecond) // +75ms = 375ms
debounced()
time.Sleep(75 * time.Millisecond) // +75ms = 450ms
debounced()
time.Sleep(75 * time.Millisecond) // +75ms = 525ms, maxWait expired at 500ms
debounced()
time.Sleep(75 * time.Millisecond) // +75ms = 600ms
debounced()
time.Sleep(150 * time.Millisecond) // +150ms = 750ms, wait expired at 700ms
// Output:
// Hello, world!
// Hello, world!
}
func ExampleNewWithMaxWait_with_cancel() {
// Create a new debouncer that will wait 100 milliseconds since the last
// call before calling the callback function. On repeated calls, it will
// wait no more than 500 milliseconds before calling the callback function.
debounced, cancel := debounce.NewWithMaxWait(
100*time.Millisecond, 500*time.Millisecond,
func() { fmt.Println("Hello, world!") },
)
debounced()
time.Sleep(75 * time.Millisecond) // +75ms = 75ms
debounced()
time.Sleep(75 * time.Millisecond) // +75ms = 150ms
debounced()
time.Sleep(75 * time.Millisecond) // +75ms = 225ms
debounced()
time.Sleep(75 * time.Millisecond) // +75ms = 300ms
debounced()
time.Sleep(75 * time.Millisecond) // +75ms = 375ms
debounced()
time.Sleep(75 * time.Millisecond) // +75ms = 450ms
cancel()
time.Sleep(150 * time.Millisecond) // +150ms = 600ms, canceled at 450ms
debounced()
time.Sleep(75 * time.Millisecond) // +75ms = 675ms
debounced()
time.Sleep(150 * time.Millisecond) // +150ms = 825ms, wait expired at 775ms
// Output:
// Hello, world!
}