File tree Expand file tree Collapse file tree 1 file changed +12
-44
lines changed
Expand file tree Collapse file tree 1 file changed +12
-44
lines changed Original file line number Diff line number Diff line change @@ -21,38 +21,23 @@ type Gollback interface {
2121type gollback struct {
2222 gollbacks []AsyncFunc
2323 ctx context.Context
24- cancel context.CancelFunc
2524}
2625
2726type response struct {
28- res interface {}
29- err error
30- index int
27+ res interface {}
28+ err error
3129}
3230
3331func (p * gollback ) Race (fns ... AsyncFunc ) (interface {}, error ) {
3432 out := make (chan * response , 1 )
3533
3634 for i , fn := range fns {
3735 go func (index int , f AsyncFunc ) {
38- for {
39- select {
40- case <- p .ctx .Done ():
41- return
42- default :
43- var r response
44- r .res , r .err = f (p .ctx )
45-
46- if p .ctx .Err () != nil {
47- return
48- }
49-
50- if r .err == nil || index == len (fns )- 1 {
51- p .cancel ()
52- out <- & r
53- }
54- return
55- }
36+ var r response
37+ r .res , r .err = f (p .ctx )
38+
39+ if r .err == nil || index == len (fns )- 1 {
40+ out <- & r
5641 }
5742 }(i , fn )
5843 }
@@ -73,29 +58,15 @@ func (p *gollback) All(fns ...AsyncFunc) ([]interface{}, []error) {
7358 go func (index int , f AsyncFunc ) {
7459 defer wg .Done ()
7560
76- for {
77- select {
78- case <- p .ctx .Done ():
79- return
80- default :
81- var r response
82- r .res , r .err = f (p .ctx )
83-
84- if p .ctx .Err () != nil {
85- return
86- }
87-
88- rs [index ] = r .res
89- errs [index ] = r .err
61+ var r response
62+ r .res , r .err = f (p .ctx )
9063
91- return
92- }
93- }
64+ rs [index ] = r .res
65+ errs [index ] = r .err
9466 }(i , fn )
9567 }
9668
9769 wg .Wait ()
98- p .cancel ()
9970
10071 return rs , errs
10172}
@@ -106,10 +77,7 @@ func New(ctx context.Context) Gollback {
10677 ctx = context .Background ()
10778 }
10879
109- ctxWithCancel , cancel := context .WithCancel (ctx )
110-
11180 return & gollback {
112- ctx : ctxWithCancel ,
113- cancel : cancel ,
81+ ctx : ctx ,
11482 }
11583}
You can’t perform that action at this time.
0 commit comments