javascript - Golang 的 syscall/js js.NewCallback 未定义
问题描述
我对 go 和 wasm 都是新手,看起来这些项目进展很快。我正在阅读在 go 中使用 wasm 的介绍,看起来虽然它是在一月份写的,但它已经过时了。
我试图在调用 JavaScript 函数时调用单个 go 函数。该示例说要做这样的事情:
js.Global().Set("jsFunctionName", js.NewCallback(goCallback))
虽然当我试图编译这个时,我收到了这个错误:
./webassembly.go:54:35: undefined: js.NewCallback
我检查了文档,没有看到对NewCallback
. 目前应该这样做的“正确”方式是什么?
解决方案
js.Global().Set("jsFunctionName", js.NewCallback(goCallback))
应该是:
js.Global().Set("jsFunctionName", js.FuncOf(goCallback))
请注意 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))