diff --git a/bar.go b/bar.go index 8c645bc..eb5be9a 100644 --- a/bar.go +++ b/bar.go @@ -161,8 +161,12 @@ // If bar has been incremented to the total, complete event is // triggered right away. func (b *Bar) EnableTriggerComplete() { - select { - case b.operateState <- func(s *bState) { + triggerComplete := make(chan bool) + select { + case b.operateState <- func(s *bState) { + defer func() { + triggerComplete <- s.triggerComplete + }() if s.triggerComplete { return } @@ -174,6 +178,10 @@ s.triggerComplete = true } }: + triggerComplete := <-triggerComplete + if !triggerComplete { + <-b.done + } case <-b.done: } }