首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何从小组件目标返回对象

如何从小组件目标返回对象
EN

Stack Overflow用户
提问于 2022-06-06 18:56:42
回答 1查看 289关注 0票数 3

我使用tinygo为简单的函数生成一个wasm:

代码语言:javascript
复制
//export onInput
func onInput() map[string]interface{} {
    return map[string]interface{}{
        "key": 60,
        "remove": 1,
    }
}

然后,我使用wasm target使用tinygo构建,如:

代码语言:javascript
复制
tinygo build -o main.wasm -target wasm ./main.go

当我调用方法wasm.exports.onInput()时,我得到一个数字,如:102752

如何将JS对象作为返回值获得如下所示:

代码语言:javascript
复制
{ key: 60, remove: 1 }

// Or array [60, 1] if possible

注:

锡耶戈文件上写着:

WebAssembly目标不直接返回JavaScript无法处理的变量(参见上面关于i64、结构、i64、多个返回值等)。相反,它们存储在调用方作为第一个参数传递的指针中。

如果这是问题的原因,我将如何将返回值作为javascript的指针传递?

编辑

我无法知道如何从go函数返回任何数组、字符串或映射。我愿意接受上述任何一项。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-06-07 10:46:37

根据tinygo的示例,您可以尝试这样的方法:

代码语言:javascript
复制
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前缀。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72522309

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档