提交 743c6618 authored 作者: mooncake9527's avatar mooncake9527

xeg

上级 ad3c3976
package xeg
import (
"context"
"time"
"gitlab.wanzhuangkj.com/tush/xpkg/xerrors/xerror"
"golang.org/x/sync/errgroup"
)
type FnCtx func(ctx context.Context) error
func Do(ctx context.Context, fns ...FnCtx) error {
if len(fns) == 0 {
return nil
}
ctx, cancel := context.WithCancel(ctx)
defer cancel()
g, ctx := errgroup.WithContext(ctx)
for _, fn := range fns {
g.Go(func() error {
return fn(ctx)
})
}
err := g.Wait()
if err != nil {
return xerror.New(err.Error())
}
return nil
}
func DoWithTimeout(timeout time.Duration, fns ...FnCtx) error {
if len(fns) == 0 {
return nil
}
ctx, cancel := context.WithTimeout(context.Background(), timeout)
defer cancel()
g, ctx := errgroup.WithContext(ctx)
for _, fn := range fns {
g.Go(func() error {
return fn(ctx)
})
}
err := g.Wait()
if err != nil {
return xerror.New(err.Error())
}
return nil
}
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论