我正在尝试从我的 golang WASM 文件导入一个函数以在 javascript 中使用,但每当我尝试使用该函数时,我都会收到未定义的错误。但如果我导入 WASM 文件,然后使用控制台,我可以手动调用该函数。我需要能够在js程序中调用它。谢谢!
Uncaught ReferenceError: add is not defined
async function init() {
const go = new Go();
const result = await WebAssembly.instantiateStreaming(
fetch("main.wasm"),
go.importObject
);
go.run(result.instance);
}
add("Hello")
init();
package main
import (
"fmt"
"syscall/js"
)
func add(this js.Value, inputs []js.Value) interface{} {
var input string = inputs[0].String()
return "you typed: " + input
}
func main() {
fmt.Println("hi")
js.Global().Set("add", js.FuncOf(add))
<-make(chan bool)
}
我想出了一个解决方案,IDK,如果它是最有效的,但我绝对有效。如果您只是创建另一个函数并在其中使用 WASM 函数,但在 init 函数中的所有内容之后立即调用它,它将起作用。
function alt() {
var h = add("Hello World")
console.log(h)
}
async function init() {
const go = new Go();
const result = await WebAssembly.instantiateStreaming(
fetch("main.wasm"), go.importObject);
var wasmModule = result.instance;
go.run(wasmModule);
console.log(wasmModule.exports)
alt()
}
init();