🎉 Commit of go-promises
This commit is contained in:
commit
5d84d26c3a
13 changed files with 238 additions and 0 deletions
28
promisify.go
Normal file
28
promisify.go
Normal file
|
|
@ -0,0 +1,28 @@
|
|||
package promises
|
||||
|
||||
import "syscall/js"
|
||||
|
||||
type JSWrapper func(this js.Value, args []js.Value) (any, error)
|
||||
|
||||
func PromisifyGoFunc(caller JSWrapper) js.Func {
|
||||
return js.FuncOf(func(this js.Value, args []js.Value) any {
|
||||
return NewGlobal("Promise", js.FuncOf(func(_ js.Value, promArgs []js.Value) any {
|
||||
resolve := promArgs[0]
|
||||
reject := promArgs[1]
|
||||
go func() {
|
||||
val, err := caller(this, args)
|
||||
if err != nil {
|
||||
reject.Invoke(GoErrorToJSError(err))
|
||||
} else {
|
||||
jsVal, jsErr := ValueOf(val)
|
||||
if jsErr != nil {
|
||||
reject.Invoke(GoErrorToJSError(jsErr))
|
||||
} else {
|
||||
resolve.Invoke(jsVal)
|
||||
}
|
||||
}
|
||||
}()
|
||||
return nil
|
||||
}))
|
||||
})
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue