WebAssembly.Tag

Baseline Widely available *

This feature is well established and works across many devices and browser versions. It’s been available across browsers since May 2022.

* Some parts of this feature may have varying levels of support.

Das WebAssembly.Tag-Objekt definiert einen Typ einer WebAssembly-Ausnahme, die an/von WebAssembly-Code geworfen werden kann.

Beim Erstellen einer WebAssembly.Exception bestimmt das Tag die Datentypen und die Reihenfolge der Werte, die von der Ausnahme getragen werden. Dasselbe einzigartige Tag-Exemplar muss verwendet werden, um auf die Werte der Ausnahme zuzugreifen (zum Beispiel, wenn Exception.prototype.getArg() verwendet wird).

Das Erstellen einer Instanz von Tag erstellt ein neues, einzigartiges Tag. Dieses Tag kann als Tag-Import an ein WebAssembly-Modul übergeben werden, wo es zu einem typisierten Tag wird, das im Tag-Abschnitt des WebAssembly-Moduls definiert ist. Sie können auch ein in einem Modul definiertes Tag exportieren und es verwenden, um Ausnahmen zu untersuchen, die aus dem Modul geworfen werden.

Hinweis: Sie können nicht auf die Werte einer Ausnahme mit einem neuen Tag zugreifen, das zufällig dieselben Parameter hat; es ist ein anderes Tag! Dies stellt sicher, dass WebAssembly-Module Auskunftsinformationen intern halten können, wenn erforderlich. Der Code kann dennoch Ausnahmen abfangen und erneut werfen, die er nicht versteht.

Konstruktor

WebAssembly.Tag()

Erstellt ein neues WebAssembly.Tag-Objekt.

Instanzmethoden

Tag.prototype.type()

Gibt das Objekt zurück, das das Datentyp-Array für das Tag (wie in seinem Konstruktor festgelegt) definiert.

Beispiele

Dieser Codeabschnitt erstellt eine neue Tag-Instanz.

js
const tagToImport = new WebAssembly.Tag({ parameters: ["i32", "f32"] });

Das folgende Beispiel zeigt, wie wir es während der Instanziierung einem Modul example.wasm übergeben könnten, indem wir ein "import object" verwenden.

js
const importObject = {
  extmod: {
    exttag: tagToImport,
  },
};

WebAssembly.instantiateStreaming(fetch("example.wasm"), importObject).then(
  (obj) => {
    // …
  },
);

Das WebAssembly-Modul könnte das Tag dann wie unten gezeigt importieren:

wat
(module
  (import "extmod" "exttag" (tag $tagname (param i32 f32))
)

Wenn das Tag verwendet wurde, um eine Ausnahme zu werfen, die nach JavaScript propagiert wurde, könnten wir das Tag verwenden, um seine Werte zu untersuchen.

Hinweis: Es gibt viele Alternativen. Wir könnten das Tag auch verwenden, um eine WebAssembly.Exception zu erstellen und diese aus einer Funktion zu werfen, die von WebAssembly aufgerufen wird.

Spezifikationen

Specification
WebAssembly JavaScript Interface: Exception Handling
# tag

Browser-Kompatibilität

Siehe auch