请问 webassembly 返回数组在 JS 中应如何获取 ?

发布于 2022-09-11 21:42:00 字数 1203 浏览 19 评论 0

例如:

float* test () {
    static float data[3];
    data[0] = 0.0;
    data[1] = 1.0;
    data[2] = 2.0;
    return data;
}
// 获取 wasm
function loadWebAssembly(filename, imports) {
  // Fetch the file and compile it
  return fetch(filename)
    .then(response => response.arrayBuffer())
    .then(buffer => WebAssembly.compile(buffer))
    .then(module => {
      // Create the imports for the module, including the
      // standard dynamic library imports
      imports = imports || {}
      imports.env = imports.env || {}
      imports.env.__memory_base = imports.env.__memory_base || 0
      imports.env.__table_base = imports.env.__table_base || 0
      if (!imports.env.memory) {
        imports.env.memory = new WebAssembly.Memory({ initial: 256 })
      }
      if (!imports.env.table) {
        imports.env.table = new WebAssembly.Table({ initial: 0, element: 'anyfunc' })
      }
      // Create the instance.
      return new WebAssembly.Instance(module, imports)
    });
}

const instance = await loadWebAssembly('test.wasm')
console.log(instance.exports._test())

转为 wasm 之后,请问在 js 交互中,应如何获取返回的数组?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

北座城市 2022-09-18 21:42:00

同问,这个返回的一个数字好像是结果在内存上的一个偏移量,但是怎么取我也很惆怅

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文