File tree Expand file tree Collapse file tree 1 file changed +9
-16
lines changed Expand file tree Collapse file tree 1 file changed +9
-16
lines changed Original file line number Diff line number Diff line change @@ -32,12 +32,10 @@ func all(parent context.Context, funcs ...func(context.Context) error) error {
3232 }
3333
3434 ctx , canFunc := context .WithCancel (parent )
35- errCh := make (chan error )
36- retCh := make (chan struct {}, len (funcs ))
37-
3835 defer canFunc ()
36+
37+ errCh := make (chan error )
3938 defer close (errCh )
40- defer close (retCh )
4139
4240 for i := 0 ; i < len (funcs ); i ++ {
4341 fn := funcs [i ]
@@ -53,30 +51,25 @@ func all(parent context.Context, funcs ...func(context.Context) error) error {
5351 case <- ctx .Done ():
5452 return
5553 default :
56- if err != nil {
57- errCh <- err
58- } else {
59- retCh <- struct {}{}
60- }
54+ errCh <- err
6155 }
6256 }()
6357 }
6458
6559 finished := 0
66- for {
60+ for finished < len ( funcs ) {
6761 select {
6862 case <- parent .Done ():
6963 return errors .New ("context canceled" )
7064 case err := <- errCh :
71- return err
72- case <- retCh :
65+ if err != nil {
66+ return err
67+ }
7368 finished ++
7469 }
75-
76- if finished == len (funcs ) {
77- return nil
78- }
7970 }
71+
72+ return nil
8073}
8174
8275// AllCompleted executes the functions asynchronously until all functions have been finished. It
You can’t perform that action at this time.
0 commit comments