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 表格仅在浏览器中加载

另请参阅