edge/pkg/app/promise_proxy.go

42 lines
710 B
Go

package app
import (
"sync"
"github.com/dop251/goja"
)
type PromiseProxy struct {
*goja.Promise
wg sync.WaitGroup
resolve func(result interface{})
reject func(reason interface{})
}
func (p *PromiseProxy) Resolve(result interface{}) {
defer p.wg.Done()
p.resolve(result)
}
func (p *PromiseProxy) Reject(reason interface{}) {
defer p.wg.Done()
p.resolve(reason)
}
func (p *PromiseProxy) Wait() {
p.wg.Wait()
}
func NewPromiseProxy(promise *goja.Promise, resolve func(result interface{}), reject func(reason interface{})) *PromiseProxy {
proxy := &PromiseProxy{
Promise: promise,
wg: sync.WaitGroup{},
resolve: resolve,
reject: reject,
}
proxy.wg.Add(1)
return proxy
}