Popularity
5.4
Stable
Activity
0.0
Stable
218
11
28

Description

Goflow is a simply package to control goroutines execution order based on dependencies. It works similar to async.auto from node.js async package, but for Go.

Programming language: Go
License: MIT License
Latest version: v1.0

Goflow alternatives and similar packages

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

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

Add another 'Goroutines' Package

README

Goflow

GoDoc License Release GoReport Travis Coverage

Goflow is a simply package to control goroutines execution order based on dependencies. It works similar to async.auto from node.js async package, but for Go.

Install

Install the package with:

go get github.com/kamildrazkiewicz/go-flow

Import it with:

import "github.com/kamildrazkiewicz/go-flow"

and use goflow as the package name inside the code.

Example

package main

import (
    "fmt"
    "github.com/kamildrazkiewicz/go-flow"
    "time"
)

func main() {
    f1 := func(r map[string]interface{}) (interface{}, error) {
        fmt.Println("function1 started")
        time.Sleep(time.Millisecond * 1000)
        return 1, nil
    }

    f2 := func(r map[string]interface{}) (interface{}, error) {
        time.Sleep(time.Millisecond * 1000)
        fmt.Println("function2 started", r["f1"])
        return "some results", nil
    }

    f3 := func(r map[string]interface{}) (interface{}, error) {
        fmt.Println("function3 started", r["f1"])
        return nil, nil
    }

    f4 := func(r map[string]interface{}) (interface{}, error) {
        fmt.Println("function4 started", r)
        return nil, nil
    }

    res, err := goflow.New().
        Add("f1", nil, f1).
        Add("f2", []string{"f1"}, f2).
        Add("f3", []string{"f1"}, f3).
        Add("f4", []string{"f2", "f3"}, f4).
        Do()

    fmt.Println(res, err)
}


Output will be:

function1 started
function3 started 1
function2 started 1
function4 started map[f2:some results f3:<nil>]
map[f1:1 f2:some results f3:<nil> f4:<nil>] <nil>


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