Documentation ¶
Overview ¶
Package gollback provides asynchronous function simple utilities, for managing execution of closure, callbacks
Example (All) ¶
package main import ( "context" "errors" "fmt" "time" "github.com/vardius/gollback" ) func main() { rs, errs := gollback.All( context.Background(), func(ctx context.Context) (interface{}, error) { time.Sleep(3 * time.Second) return 1, nil }, func(ctx context.Context) (interface{}, error) { return nil, errors.New("failed") }, func(ctx context.Context) (interface{}, error) { return 3, nil }, ) fmt.Println(rs) fmt.Println(errs) }
Output: [1 <nil> 3] [<nil> failed <nil>]
Example (Race) ¶
package main import ( "context" "errors" "fmt" "time" "github.com/vardius/gollback" ) func main() { r, err := gollback.Race( context.Background(), func(ctx context.Context) (interface{}, error) { time.Sleep(3 * time.Second) return 1, nil }, func(ctx context.Context) (interface{}, error) { return nil, errors.New("failed") }, func(ctx context.Context) (interface{}, error) { return 3, nil }, ) fmt.Println(r) fmt.Println(err) }
Output: 3 <nil>
Example (RetryFiveTimes) ¶
package main import ( "context" "errors" "fmt" "github.com/vardius/gollback" ) func main() { // Will retry 5 times res, err := gollback.Retry(context.Background(), 5, func(ctx context.Context) (interface{}, error) { return nil, errors.New("failed") }) fmt.Println(res) fmt.Println(err) }
Output: <nil> failed
Example (RetryTimeout) ¶
package main import ( "context" "errors" "fmt" "time" "github.com/vardius/gollback" ) func main() { ctx, cancel := context.WithTimeout(context.Background(), 5*time.Second) defer cancel() // Will retry infinitely until timeouts by context (after 5 seconds) res, err := gollback.Retry(ctx, 0, func(ctx context.Context) (interface{}, error) { return nil, errors.New("failed") }) fmt.Println(res) fmt.Println(err) }
Output: <nil> context deadline exceeded
Index ¶
Examples ¶
Constants ¶
This section is empty.
Variables ¶
View Source
var ErrNoCallbacks = errors.New("no callback to run")
Functions ¶
func All ¶ added in v1.1.0
All method returns when all the callbacks passed as an iterable have finished, returned responses and errors are ordered according to callback order will panic if context is nil
Types ¶
Click to show internal directories.
Click to hide internal directories.