All checks were successful
Find and Upload Minecraft Server versions / build (push) Successful in 1m28s
Signed-off-by: Matheus Sampaio Queiroga <srherobrine20@gmail.com>
44 lines
625 B
Go
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
|
|
}
|