WebAssembly.Tag
**WebAssembly.Tag
** 对象定义了 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 模块可能会像下面这样导入标签
wasm
(module
(import "extmod" "exttag" (tag $tagname (param i32 f32))
)
如果标签用于抛出传播到 JavaScript 的异常,我们可以使用标签来检查其值。
**注意:**还有许多其他方法。我们也可以使用标签来创建WebAssembly.Exception
,并从 WebAssembly 调用的函数中抛出它。
规范
规范 |
---|
WebAssembly JavaScript 接口:异常处理 # 标签 |
浏览器兼容性
BCD 表格仅在浏览器中加载