从基础库版本 2.34.0.0 开始,小程序提供了全局的 TTWebAssembly 对象。自基础库版本 2.92.0.0 开始,TTWebAssembly 支持加载包内的经过 brotli 压缩过的 wasm 文件(后缀为*.wasm.br)。
TTWebAssembly 类似 Web 标准的 WebAssembly,在执行计算密集型任务时,与 JavaScript 相比,可以提高一定的性能。

API

TTWebAssembly.compile(path)

编译一个 WebAssebmly 模块,path 必须为包内 wasm 文件路径。
函数返回一个 Promise 对象,若文件存在且编译成功,则 resolve 一个 TTWebAssembly.Module。若文件读取失败或编译失败,则 reject。

TTWebAssembly.instantiate(path, importObject)

创建 WebAssebmly 实例,path 必须为包内 wasm 文件路径。
函数返回一个 Promise 对象,若文件存在且编译成功,则 resolve 一个对象,对象的 module 属性为 TTWebAssembly.Module,instance 属性为 TTWebAssembly.Instance。若文件读取失败或编译失败、导入对象不匹配,则 reject。

TTWebAssembly.Module

TTWebAssemblyy Module 类可以通过 TTWebAssembly.compile 构造,与 WebAssembly 标准相同。

TTWebAssembly.Global

用于 JavaScript 和 Instance 之间传递全局状态,与 WebAssembly 标准相同。

TTWebAssembly.Table

用于动态链接不同 Instance,与 WebAssembly 标准相同。

TTWebAssembly.Memory

用于 JavaScript 和 Instance 之间共享内存。与 WebAssembly 标准相同。

TTWebAssembly.Instance

TTWebAssemblyy Instance 类可以通过 TTWebAssembly.instantiatenew TTWebAssembly.Instance(module, importObject) 构造。暴露 exports 属性,包含实例导出的 Table、Global、Memory 或函数。