Files
Matheus Sampaio Queiroga cc50a88525
All checks were successful
Find and Upload Minecraft Server versions / build (push) Successful in 1m28s
Fix fetch
Signed-off-by: Matheus Sampaio Queiroga <srherobrine20@gmail.com>
2024-04-29 21:22:37 -03:00

44 lines
625 B
Go

package promise
type Promise struct {
waits int
cal chan error
}
// Add new callback to promise array
func (prm *Promise) Add(t func() error) *Promise {
prm.waits++
go func() {
err := t()
prm.waits--
prm.cal <- err
}()
return prm
}
func (prm *Promise) Close() {
close(prm.cal)
}
// Wait process and return error if functions return error
func (prm *Promise) Wait() error {
var (
err error
ok bool
)
for prm.waits > 0 {
err, ok = <- prm.cal
if !ok || err != nil {
break
}
}
return err
}
func Create() *Promise {
prm := Promise{}
prm.cal = make(chan error)
prm.waits = 0
return &prm
}