WebAssembly 返回的字符串在 JS 里怎么正确读取?
我用 Rust 编译了个 wasm 模块,导出一个返回字符串的函数,但在 Vue 里调用后拿到的是一堆数字,不知道怎么转成正常字符串。试过 TextDecoder 但好像位置不对,文档看得有点懵。
这是我在 Vue 组件里的调用代码:
<script setup>
import init, { get_message } from '@/wasm/pkg/my_wasm.js'
let msg = ''
onMounted(async () => {
await init()
const ptr = get_message() // 返回的是个数字指针?
// 接下来该怎么做?直接 toString() 不行
msg = ptr.toString()
})
</script>
<template>
<div>{{ msg }}</div>
</template>
TextDecoder解码内存里的字符串。获取get_message返回的指针后,使用new TextDecoder().decode(memory.buffer.slice(ptr, ptr + length))。记得从 wasm 模块导出内存实例memory。