我使用tinygo为简单的函数生成一个wasm:
//export onInput
func onInput() map[string]interface{} {
return map[string]interface{}{
"key": 60,
"remove": 1,
}
}然后,我使用wasm target使用tinygo构建,如:
tinygo build -o main.wasm -target wasm ./main.go当我调用方法wasm.exports.onInput()时,我得到一个数字,如:102752
如何将JS对象作为返回值获得如下所示:
{ key: 60, remove: 1 }
// Or array [60, 1] if possible注:
锡耶戈文件上写着:
WebAssembly目标不直接返回JavaScript无法处理的变量(参见上面关于i64、结构、i64、多个返回值等)。相反,它们存储在调用方作为第一个参数传递的指针中。
如果这是问题的原因,我将如何将返回值作为javascript的指针传递?
编辑
我无法知道如何从go函数返回任何数组、字符串或映射。我愿意接受上述任何一项。
发布于 2022-06-07 10:46:37
根据tinygo的示例,您可以尝试这样的方法:
package main
import "syscall/js"
func main() {
wait := make(chan struct{}, 0)
js.Global().Set("onInput", js.FuncOf(onInput))
<-wait
}
// note that there is no export as we registered this function in global
func onInput(this js.Value, args []js.Value) interface{} {
return js.ValueOf(map[string]interface{}{
"key": 60,
"remove": 1,
})
}在js代码中,只使用onInput,没有wasmModule.instance.exports前缀。
https://stackoverflow.com/questions/72522309
复制相似问题