MCPcopy Create free account
hub / github.com/cloud-native-go/examples / DebounceFirst

Function DebounceFirst

ch04/debounce_first.go:25–44  ·  view source on GitHub ↗
(circuit Circuit, d time.Duration)

Source from the content-addressed store, hash-verified

23)
24
25func DebounceFirst(circuit Circuit, d time.Duration) Circuit {
26 var threshold time.Time
27 var result string
28 var err error
29 var m sync.Mutex
30
31 return func(ctx context.Context) (string, error) {
32 m.Lock()
33 defer m.Unlock()
34
35 if time.Now().Before(threshold) {
36 return result, err
37 }
38
39 result, err = circuit(ctx)
40 threshold = time.Now().Add(d)
41
42 return result, err
43 }
44}

Callers 1

Calls

no outgoing calls

Tested by 1