Popularity
2.4
Growing
Activity
4.7
Declining
31
1
1

Programming language: Go
Tags: Goroutines    
Latest version: v1.0.6

gollback alternatives and similar packages

Based on the "Goroutines" category

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 godoc.org

🚏 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       500000          2961 ns/op         668 B/op          5 allocs/op
BenchmarkAll-4       5000000           273 ns/op          40 B/op          1 allocs/op
BenchmarkRetry-4    200000000            6.68 ns/op        0 B/op          0 allocs/op
PASS
ok      github.com/vardius/gollback 32.418s

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() { g := gollback.New(context.Background())

r, err := g.Race(
    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() {
    g := gollback.New(context.Background())

    rs, errs := g.All(
        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()

g := gollback.New(ctx)

// Will retry infinitely until timeouts by context (after 5 seconds)
res, err := g.Retry(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, e := g.Retry(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.