Popularity
4.2
Declining
Activity
0.0
Declining
116
1
12

Programming language: Go
License: MIT License
Tags: Goroutines    
Latest version: v1.1.0

gollback alternatives and similar packages

Based on the "Goroutines" category.
Alternatively, view gollback alternatives based on common mentions on social networks and blogs.

Do you think we are missing an alternative of gollback or a related project?

Add another 'Goroutines' Package

README

โš™๏ธ gollback

Build Status Go Report Card codecov license

gollback - Go asynchronous simple function utilities, for managing execution of closures and callbacks

๐Ÿ“– ABOUT

Contributors:

Want to contribute ? Feel free to send pull requests!

Have problems, bugs, feature ideas? We are using the github issue tracker to manage them.

๐Ÿ“š Documentation

For examples visit godoc#pkg-examples

For GoDoc reference, visit pkg.go.dev

๐Ÿš HOW TO USE

๐Ÿš… Benchmark

CPU: 3,3 GHz Intel Core i7

RAM: 16 GB 2133 MHz LPDDR3

โžœ  gollback git:(master) โœ— go test -bench=. -cpu=4 -benchmem
goos: darwin
goarch: amd64
pkg: github.com/vardius/gollback
BenchmarkRace-4       566022          2608 ns/op         663 B/op          5 allocs/op
BenchmarkAll-4       5052489           241 ns/op          42 B/op          1 allocs/op
BenchmarkRetry-4    206430384            5.93 ns/op        0 B/op          0 allocs/op
PASS
ok      github.com/vardius/gollback 31.741s

Race

Race method returns a response as soon as one of the callbacks in an iterable resolves with the value that is not an error, otherwise last error is returne

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 }, ) }


## All
> All method returns when all of the callbacks passed as an iterable have finished, returned responses and errors are ordered according to callback order
```go
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
        },
    )
}

Retry

Retry method retries callback given amount of times until it executes without an error, when retries = 0 it will retry infinitely

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")
})

// Will retry 5 times or will timeout by context (after 5 seconds)
res, err := gollback.Retry(ctx, 5, func(ctx context.Context) (interface{}, error) {
    return nil, errors.New("failed")
})

}


๐Ÿ“œ [License](LICENSE.md)
-------

This package is released under the MIT license. See the complete license in the package


*Note that all licence references and agreements mentioned in the gollback README section above are relevant to that project's source code only.