WebAssembly.Tag
Baseline 广泛可用 *
WebAssembly.Tag
对象定义了可以从 WebAssembly 代码抛出到 WebAssembly 代码的 WebAssembly 异常的类型。
创建 WebAssembly.Exception
时,标签定义了异常携带的值的数据类型和顺序。必须使用相同的唯一标签实例来访问异常的值(例如,在使用 Exception.prototype.getArg()
时)。
实例化 Tag
时会创建新的唯一标签。此标签可以作为导入项传递给 WebAssembly 模块,在那里它将成为 WebAssembly 模块标签部分中定义的类型化标签。您也可以导出模块中定义的标签,并使用它来检查从模块抛出的异常。
注意: 您无法访问具有相同参数但却是不同标签的异常的值!这可确保 WebAssembly 模块在需要时可以保持异常信息内部化。代码仍然可以捕获并重新抛出它不理解的异常。
构造函数
WebAssembly.Tag()
-
创建一个新的
WebAssembly.Tag
对象。
实例方法
Tag.prototype.type()
-
返回在构造函数中设置的、定义标签数据类型数组的对象。
示例
此代码片段创建了一个新的 Tag
实例。
js
const tagToImport = new WebAssembly.Tag({ parameters: ["i32", "f32"] });
下面的代码片段展示了如何在实例化时使用“导入对象”将其传递给 example.wasm 模块。
js
const importObject = {
extmod: {
exttag: tagToImport,
},
};
WebAssembly.instantiateStreaming(fetch("example.wasm"), importObject).then(
(obj) => {
// …
},
);
WebAssembly 模块随后可以按如下方式导入该标签
wat
(module
(import "extmod" "exttag" (tag $tagname (param i32 f32))
)
如果该标签用于抛出传播到 JavaScript 的异常,我们可以使用该标签来检查其值。
注意: 有许多替代方法。我们还可以使用该标签创建 WebAssembly.Exception
并从 WebAssembly 调用的函数中抛出它。
规范
规范 |
---|
WebAssembly JavaScript 接口:异常处理 # tag |
浏览器兼容性
加载中…