WebAssembly
Baseline 广泛可用 *
WebAssembly JavaScript 对象是所有 WebAssembly 相关功能的命名空间。
与大多数其他全局对象不同,WebAssembly 不是一个构造函数(它不是一个函数对象)。你可以将其与 Math 进行比较,Math 也是数学常量和函数的命名空间对象,或者与 Intl 进行比较,Intl 是国际化构造函数和其他语言敏感函数的命名空间对象。
描述
WebAssembly 对象的主要用途是:
- 使用
WebAssembly.instantiate()函数加载 WebAssembly 代码。 - 通过
WebAssembly.Memory()/WebAssembly.Table()构造函数创建新的内存和表实例。 - 通过
WebAssembly.CompileError()/WebAssembly.LinkError()/WebAssembly.RuntimeError()构造函数提供处理 WebAssembly 中发生的错误的工具。
接口
WebAssembly.CompileError-
指示在 WebAssembly 解码或验证期间发生的错误。
WebAssembly.Global-
表示一个全局变量实例,可从 JavaScript 访问,也可在多个
WebAssembly.Module实例之间导入/导出。这允许动态链接多个模块。 WebAssembly.Instance-
是
WebAssembly.Module的一个有状态的、可执行的实例。 WebAssembly.LinkError-
指示在模块实例化期间发生的错误(除了起始函数中的 陷阱)。
WebAssembly.Memory-
一个对象,其
buffer属性是一个可调整大小的ArrayBuffer,它保存了 WebAssemblyInstance访问的原始内存字节。 WebAssembly.Module-
包含已由浏览器编译的状态无关的 WebAssembly 代码,可以高效地 与 Workers 共享,并可以多次实例化。
WebAssembly.RuntimeError-
每当 WebAssembly 指定 陷阱 时抛出的错误类型。
WebAssembly.Table-
一个类数组结构,代表 WebAssembly 表,用于存储 引用,例如函数引用。
WebAssembly.Tag-
表示 WebAssembly 异常类型的对象。
WebAssembly.Exception-
一个 WebAssembly 异常对象,可以在 WebAssembly/JavaScript 边界内外抛出、捕获和重新抛出。
静态方法
WebAssembly.compile()-
从 WebAssembly 二进制代码编译
WebAssembly.Module,将实例化作为一个单独的步骤。 WebAssembly.compileStreaming()-
直接从流式底层源编译
WebAssembly.Module,将实例化作为一个单独的步骤。 WebAssembly.instantiate()-
用于编译和实例化 WebAssembly 代码的主要 API,返回一个
Module及其第一个Instance。 WebAssembly.instantiateStreaming()-
直接从流式底层源编译和实例化 WebAssembly 模块,返回一个
Module及其第一个Instance。 WebAssembly.validate()-
验证给定的 WebAssembly 二进制代码的类型化数组,并返回字节是否为有效的 WebAssembly 代码(
true)或否(false)。
示例
流式传输 Wasm 模块,然后编译和实例化它
下面的示例(请参阅 GitHub 上的 instantiate-streaming.html 演示,以及 在线查看)直接从底层源流式传输 Wasm 模块,然后编译和实例化它,promise 将使用 ResultObject 来满足。因为 instantiateStreaming() 函数接受一个 Response 对象的 promise,所以你可以直接将一个 fetch() 调用传递给它,当 promise 满足时,它将把响应传递给函数。
const importObject = {
my_namespace: { imported_func: (arg) => console.log(arg) },
};
WebAssembly.instantiateStreaming(fetch("simple.wasm"), importObject).then(
(obj) => obj.instance.exports.exported_func(),
);
然后访问 ResultObject 的 .instance 属性,并调用包含的导出函数。
规范
| 规范 |
|---|
| WebAssembly JavaScript 接口 # webassembly-namespace |
浏览器兼容性
加载中…