platform_web_helper.go 649 B

12345678910111213141516171819202122232425
  1. //go:build js && wasm
  2. package ultraviolet
  3. import "syscall/js"
  4. func WebSetHandlers(handlerCreate func([]js.Value, js.Value, js.Value), handlerUpdate func([]js.Value, js.Value, js.Value)) {
  5. js.Global().Set("Create", webWrap(handlerCreate))
  6. js.Global().Set("Update", webWrap(handlerUpdate))
  7. }
  8. func webWrap(handler func([]js.Value, js.Value, js.Value)) js.Func {
  9. wrapper := func(this js.Value, args1 []js.Value) interface{} {
  10. return js.Global().Get("Promise").New(
  11. js.FuncOf(
  12. func(this js.Value, args2 []js.Value) interface{} {
  13. go handler(args1, args2[0], args2[1])
  14. return nil
  15. },
  16. ),
  17. )
  18. }
  19. return js.FuncOf(wrapper)
  20. }