✨ Add examples for WaitErr methods
This commit is contained in:
parent
7a2583c8e4
commit
06c15f8250
1 changed files with 90 additions and 0 deletions
90
example_test.go
Normal file
90
example_test.go
Normal file
|
|
@ -0,0 +1,90 @@
|
|||
package waiterr_test
|
||||
|
||||
import (
|
||||
"errors"
|
||||
"fmt"
|
||||
"time"
|
||||
|
||||
"codeberg.org/danjones000/waiterr"
|
||||
)
|
||||
|
||||
func Example() {
|
||||
we := new(waiterr.WaitErr)
|
||||
|
||||
we.Go(func() error {
|
||||
time.Sleep(100 * time.Millisecond)
|
||||
fmt.Println("Goroutine 1 finished")
|
||||
return nil
|
||||
})
|
||||
|
||||
we.Go(func() error {
|
||||
time.Sleep(50 * time.Millisecond)
|
||||
fmt.Println("Goroutine 2 finished with an error")
|
||||
return errors.New("something went wrong in goroutine 2")
|
||||
})
|
||||
|
||||
we.Go(func() error {
|
||||
time.Sleep(150 * time.Millisecond)
|
||||
fmt.Println("Goroutine 3 finished")
|
||||
return nil
|
||||
})
|
||||
|
||||
// Wait for all goroutines and get all errors
|
||||
if err := we.Wait(); err != nil {
|
||||
fmt.Printf("All goroutines finished. Combined error:\n%v\n", err)
|
||||
}
|
||||
|
||||
// Output:
|
||||
// Goroutine 2 finished with an error
|
||||
// Goroutine 1 finished
|
||||
// Goroutine 3 finished
|
||||
// All goroutines finished. Combined error:
|
||||
// something went wrong in goroutine 2
|
||||
}
|
||||
|
||||
func ExampleWaitErr_WaitForError() {
|
||||
we := new(waiterr.WaitErr)
|
||||
we.Go(func() error {
|
||||
time.Sleep(100 * time.Millisecond)
|
||||
return errors.New("first error from we")
|
||||
})
|
||||
we.Go(func() error {
|
||||
time.Sleep(50 * time.Millisecond)
|
||||
return errors.New("second error from we")
|
||||
})
|
||||
|
||||
if err := we.WaitForError(); err != nil {
|
||||
fmt.Printf("First error returned from we: %v\n", err)
|
||||
}
|
||||
|
||||
// Output:
|
||||
// First error returned from we: second error from we
|
||||
|
||||
}
|
||||
|
||||
func ExampleWaitErr_Unwrap() {
|
||||
we := new(waiterr.WaitErr)
|
||||
we.Go(func() error {
|
||||
time.Sleep(100 * time.Millisecond)
|
||||
return errors.New("first error from we")
|
||||
})
|
||||
we.Go(func() error {
|
||||
time.Sleep(50 * time.Millisecond)
|
||||
return errors.New("second error from we")
|
||||
})
|
||||
we.Go(func() error {
|
||||
time.Sleep(75 * time.Millisecond)
|
||||
return nil
|
||||
})
|
||||
|
||||
_ = we.Wait()
|
||||
|
||||
errs := we.Unwrap()
|
||||
for _, e := range errs {
|
||||
fmt.Println(e)
|
||||
}
|
||||
|
||||
// Output:
|
||||
// second error from we
|
||||
// first error from we
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue