javascript - Golang 的 syscall/js js.NewCallback 未定义

标签 javascript go webassembly

我对 go 和 wasm 都是新手,看起来这些项目进展很快。 I was reading an introduction to using wasm in go看起来虽然是一月份写的,但已经过时了。

我试图在调用 JavaScript 函数时调用单个 go 函数。这个例子说要做这样的事情:

 js.Global().Set("jsFunctionName", js.NewCallback(goCallback))

虽然当我试图编译这个时,我得到了这个错误:

./webassembly.go:54:35: undefined: js.NewCallback

I checked the documentation并且看不到对 NewCallback 的引用。目前“正确”的做法是什么?

最佳答案

js.Global().Set("jsFunctionName", js.NewCallback(goCallback))

应该是:

js.Global().Set("jsFunctionName", js.FuncOf(goCallback))

注意 goCallback 的签名已经改变,现在从 Go 1.12 开始,支持返回值。 例如,这里是如何公开一个简单的添加函数:

// 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))

关于javascript - Golang 的 syscall/js js.NewCallback 未定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55800163/

相关文章:

javascript - 商品及服务税识别号 (GSTIN) 的正则表达式

javascript - 如何将 PHP 放入 Javascript 中?

javascript - 未捕获的类型错误 : Cannot read properties of undefined (reading 'dataTransfer' )

html - 如何在 golang gin web 框架中使用 golang 数据呈现 HTML?

go - Travis build for go targeting Wasm

javascript - ES6 for 循环中 const 的内部原理

go - 在循环中清除和重写 slice

go - Gzip 未压缩的 http.Response.Body

javascript - 如何使用本地工具从本地文件系统读取 WebAssembly 文件 JavaScript

reactjs - 在 React 中为大文件(超过 4kb)加载 WASM 模块的正确方法