Shafin098 / sugar

Sugar is a js like async/await for go

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Sugar

Overview

Sugar is a go library that tries to provide js like async/await construct using goroutine and channel

Installing

go get -u github.com/shafn098/sugar@latest

Usage

package main

import (
	"fmt"
	"os"
	"time"

	sugar "github.com/shafin098/sugar"
)

func WaitTwoSecondsAndSum(nums ...int) (int, error) {
	time.Sleep(2 * time.Second)
	return nums[0] + nums[1], nil
}

func WaitFourSecondsAndSum(nums ...int) (int, error) {
	time.Sleep(4 * time.Second)
	return nums[0] + nums[1], nil
}

func main() {
	waitSumOne := sugar.Async(WaitTwoSecondsAndSum, 2, 3)
	fmt.Println("summing 2,3 and waiting for 2 seconds")

	waitSumTwo := sugar.Async(WaitTwoSecondsAndSum, 3, 3)
	fmt.Println("summing 3,3 and waiting for 4 seconds")

	sumOne, err := sugar.Await(waitSumOne)
	if err != nil {
		fmt.Fprintf(os.Stderr, "error: %s", err)
	}
	fmt.Println("sumOne: ", sumOne)

	sumTwo, err := sugar.Await(waitSumTwo)
	if err != nil {
		fmt.Fprintf(os.Stderr, "error: %s", err)
	}
	fmt.Println("sumTwo: ", sumTwo)
}

About

Sugar is a js like async/await for go

License:MIT License


Languages

Language:Go 100.0%