File tree Expand file tree Collapse file tree 1 file changed +18
-10
lines changed Expand file tree Collapse file tree 1 file changed +18
-10
lines changed Original file line number Diff line number Diff line change @@ -195,18 +195,26 @@ func (in instance) For(
195
195
}()
196
196
197
197
var err error
198
- for resp := range ch {
199
- if err != nil {
200
- continue
201
- }
202
- if resp .Err != nil {
203
- err = resp .Err
204
- continue
198
+ for {
199
+ select {
200
+ case <- ctx .Done ():
201
+ // Return early if the context is canceled
202
+ return acc .Result (), ctx .Err ()
203
+ case resp , ok := <- ch :
204
+ if ! ok {
205
+ // Channel closed, we're done
206
+ return acc .Result (), err
207
+ }
208
+ if err != nil {
209
+ continue
210
+ }
211
+ if resp .Err != nil {
212
+ err = resp .Err
213
+ continue
214
+ }
215
+ err = acc .Accumulate (ctx , resp .Res , resp .I )
205
216
}
206
- err = acc .Accumulate (ctx , resp .Res , resp .I )
207
217
}
208
-
209
- return acc .Result (), err
210
218
}
211
219
212
220
// convert to matrix
You can’t perform that action at this time.
0 commit comments