JS不能向WASM传递数组?

Posted 柳鲲鹏

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JS不能向WASM传递数组?相关的知识,希望对你有一定的参考价值。

  自从把OFFICE编译为wasm之后,吾就想解决怎样传递数组的事情。结果在TeaVM问题列表中,看到这样一个内容:

https://github.com/konsoletyper/teavm/issues/379

There's no way to transfer arrays between javascript and WebAssembly. So there's no way to transfer array between TeaVM/WebAssembly and JavaScript. If you want to transfer complex data structures between Java and JavaScript, you should prefer JavaScript target. Currently, targetting to WebAssembly gives no benefits, either in performance or memory consumption.

没有办法在JS和Wasm之间传递数组。所以没有办法在TeaVM和JS之间传递数组。如果你想在Java和JS之间传递复杂数据结构的话, 你应该使用JS target。目前这样做没有好处,性能和内存都一样。

 is there a way to read & write from WebAssembly Memory(HEAP)

能否使用HEAP读写呢?

 

分析:

 为什么不能传递数组呢?道理也简单,JS的数组是包含多种内容,在内存中乱七八糟。wasm想访问传递进来的数组,必须通过JS接口才有可能(肯定要再套一层)。而Wasm中没有对应的结构。

以目前来看,wasm提供一个访问方法,应该是唯一可行的办法。说起来容易,怎么做呢?

以上是关于JS不能向WASM传递数组?的主要内容,如果未能解决你的问题,请参考以下文章

WASM 和 Node.js 不能在模块外使用“import.meta”

wasm与js,输入输出

如何使用 Wasm-Bindgen Web_sys Wasm-pack 将字符串从 Js 传递到通过 Rust 生成的 Wasm

如何向 Shader 传递一个巨大的数组

vue2.0子组件能不能修改父组件传递过来的数据

js传递数组