Можно ли явно вызвать экспортированную функцию Go WebAssembly из JS? - PullRequest
3 голосов
/ 31 мая 2019

Можно ли вызвать функцию Go WebAssembly, отличную от main, в Javascript?

Позвольте мне сначала показать, что я сделал. Функции My Go определены следующим образом:

package main

import "fmt"

func main() {
    fmt.Println("it works!")
}

func add(a, b int) int {
    return a + b
}

Я могу вызвать только функцию main:

const go = new Go();

const data   = await fetch("http://localhost:3333/main.wasm");
const result = await WebAssembly.instantiateStreaming(data, go.importObject);

go.run(result.instance);

, который возвращает it works! как ожидалось.

Однако всякий раз, когда я пытаюсь вызвать функцию add, я получаю TypeError: Cannot read property 'add' of undefined at Welcome.getWasm, потому что оба result.exports, result.instance.exports не содержат мою функцию. Я также попытался использовать заглавную функцию Go, но безрезультатно.

Таким образом, я начал задаваться вопросом, в чем может быть проблема - возможно ли даже вызвать случайную функцию Go из Javascript? Или я могу вызвать только функцию main() по умолчанию?

...