diff --git a/bar.go b/bar.go index d709352..8c78758 100644 --- a/bar.go +++ b/bar.go @@ -145,6 +145,7 @@ // TraverseDecorators traverses all available decorators and calls cb func on each. func (b *Bar) TraverseDecorators(cb func(decor.Decorator)) { + done := make(chan struct{}) select { case b.operateState <- func(s *bState) { for _, decorators := range [...][]decor.Decorator{ @@ -155,7 +156,9 @@ cb(extractBaseDecorator(d)) } } - }: + close(done) + }: + <-done case <-b.done: } }