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 in/aus WebAssembly-Code ausgelöst werden kann.

Beim Erstellen einer WebAssembly.Exception definiert das Tag die Datentypen und die Reihenfolge der von der Ausnahme übertragenen Werte. Die gleiche eindeutige Tag-Instanz muss verwendet werden, um auf die Werte der Ausnahme zuzugreifen (zum Beispiel bei der Verwendung von Exception.prototype.getArg()).

Das Erstellen einer Instanz von Tag erzeugt 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 inspizieren, die aus dem Modul geworfen werden.

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

Konstruktor

WebAssembly.Tag()

Erstellt ein neues WebAssembly.Tag Objekt.

Instanzmethoden

Tag.prototype.type()

Gibt das Objekt zurück, das das Datentypen-Array für das Tag definiert (wie im Konstruktor festgelegt).

Beispiele

Dieses Codebeispiel 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 an ein Modul example.wasm mit einem "Import-Objekt" übergeben könnten.

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:

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

Wenn das Tag verwendet wurde, um eine Ausnahme auszulösen, die bis zu JavaScript propagiert wurde, könnten wir das Tag verwenden, um seine Werte zu inspizieren.

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

Spezifikationen

Specification
WebAssembly JavaScript Interface: Exception Handling
# tag

Browser-Kompatibilität

Report problems with this compatibility data on GitHub
desktopmobileserver
Chrome
Edge
Firefox
Opera
Safari
Chrome Android
Firefox for Android
Opera Android
Safari on iOS
Samsung Internet
WebView Android
WebView on iOS
Deno
Node.js
Tag
Tag() constructor
type

Legend

Tip: you can click/tap on a cell for more information.

Full support
Full support
No support
No support

Siehe auch