Golang的syscall / js js.NewCallback未定义

w33*_*33t 2 javascript go webassembly

我和Wasm都是新手,看来这些项目进展很快。我正在阅读有关在旅途中使用wasm的介绍,看来虽然它是在一月份编写的,但已经过时了。

我正在尝试在调用JavaScript函数时调用单个go函数。该示例说要执行以下操作:

 js.Global().Set("jsFunctionName", js.NewCallback(goCallback))
Run Code Online (Sandbox Code Playgroud)

虽然在尝试编译时,会出现以下错误:

./webassembly.go:54:35: undefined: js.NewCallback
Run Code Online (Sandbox Code Playgroud)

我检查了文档,看不到参考NewCallback。当前应该执行的“正确”方法是什么?

gog*_*man 7

js.Global().Set("jsFunctionName", js.NewCallback(goCallback))
Run Code Online (Sandbox Code Playgroud)

应为:

js.Global().Set("jsFunctionName", js.FuncOf(goCallback))
Run Code Online (Sandbox Code Playgroud)

请注意,goCallback的签名已更改,并且从Go 1.12开始,现在支持返回值。例如,以下是公开简单的add函数的方法:

// function definition
func add(this js.Value, i []js.Value) interface{} {
  return js.ValueOf(i[0].Int()+i[1].Int())
}

// exposing to JS
js.Global().Set("add", js.FuncOf(add))
Run Code Online (Sandbox Code Playgroud)