WebAssembly

Baseline Widely available *

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

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

Das WebAssembly JavaScript-Objekt dient als Namespace für alle mit WebAssembly verbundenen Funktionen.

Im Gegensatz zu den meisten anderen globalen Objekten ist WebAssembly kein Konstruktor (es ist kein Funktionsobjekt). Sie können es mit Math vergleichen, das ebenfalls ein Namespace-Objekt für mathematische Konstanten und Funktionen ist, oder mit Intl, das ein Namespace-Objekt für Internationalisierungskonstruktoren und andere sprachsensitiv Funktionen ist.

Beschreibung

Die Hauptanwendungen des WebAssembly-Objekts sind:

Schnittstellen

WebAssembly.CompileError

Zeigt einen Fehler beim Dekodieren oder Validieren von WebAssembly an.

WebAssembly.Global

Repräsentiert eine globale Variableninstanz, die sowohl von JavaScript zugänglich als auch über ein oder mehrere WebAssembly.Module Instanzen importierbar/exportierbar ist. Dies ermöglicht die dynamische Verknüpfung mehrerer Module.

WebAssembly.Instance

Ist eine zustandsbehaftete, ausführbare Instanz eines WebAssembly.Module.

WebAssembly.LinkError

Zeigt einen Fehler bei der Modulinstanziierung an (außer Traps von der Startfunktion).

WebAssembly.Memory

Ein Objekt, dessen buffer Eigenschaft ein veränderbarer ArrayBuffer ist, der die rohen Bytes des Speichers enthält, auf die von einer WebAssembly Instance zugegriffen wird.

WebAssembly.Module

Enthält zustandslosen WebAssembly-Code, der bereits vom Browser kompiliert wurde und effizient mit Workern geteilt und mehrfach instanziiert werden kann.

WebAssembly.RuntimeError

Error-Typ, der geworfen wird, wenn immer WebAssembly eine Trap spezifiziert.

WebAssembly.Table

Eine array-ähnliche Struktur, die eine WebAssembly-Tabelle darstellt und Referenzen speichert, wie z.B. Funktionsreferenzen.

WebAssembly.Tag

Ein Objekt, das einen Typ von WebAssembly-Ausnahme darstellt.

WebAssembly.Exception

Ein WebAssembly-Ausnahmeobjekt, das sowohl innerhalb als auch über WebAssembly/JavaScript-Grenzen hinweg geworfen, gefangen und wieder geworfen werden kann.

Statische Methoden

WebAssembly.compile()

Kompiliert ein WebAssembly.Module aus WebAssembly-Binärcode, wobei die Instanziierung ein separater Schritt bleibt.

WebAssembly.compileStreaming()

Kompiliert ein WebAssembly.Module direkt aus einer gestreamten zugrunde liegenden Quelle, wobei die Instanziierung ein separater Schritt bleibt.

WebAssembly.instantiate()

Die primäre API zum Kompilieren und Instanziieren von WebAssembly-Code, bei der sowohl ein Module als auch seine erste Instance zurückgegeben werden.

WebAssembly.instantiateStreaming()

Kompiliert und instanziiert ein WebAssembly-Modul direkt aus einer gestreamten zugrunde liegenden Quelle und gibt dabei sowohl ein Module als auch dessen erste Instance zurück.

WebAssembly.validate()

Validiert ein gegebenes typisiertes Array von WebAssembly-Binärcode und gibt zurück, ob die Bytes gültiger WebAssembly-Code (true) oder nicht (false) sind.

Beispiele

Streamen eines Wasm-Moduls, dann kompilieren und instanziieren

Das folgende Beispiel (sehen Sie sich unser instantiate-streaming.html Demo auf GitHub an und sehen Sie es live an) streamt direkt ein Wasm-Modul von einer zugrunde liegenden Quelle, kompiliert und instanziiert es dann, wobei das Versprechen mit einem ResultObject erfüllt wird. Da die Funktion instantiateStreaming() ein Versprechen für ein Response Objekt akzeptiert, können Sie ihr direkt einen fetch() Aufruf übergeben, und es wird die Antwort in die Funktion übergeben, wenn sie erfüllt wird.

js
const importObject = {
  my_namespace: { imported_func: (arg) => console.log(arg) },
};

WebAssembly.instantiateStreaming(fetch("simple.wasm"), importObject).then(
  (obj) => obj.instance.exports.exported_func(),
);

Die .instance-Eigenschaft des ResultObject wird dann abgerufen und die darin enthaltene exportierte Funktion aufgerufen.

Spezifikationen

Specification
WebAssembly JavaScript Interface
# webassembly-namespace

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
api
CompileError
CompileError() constructor
Exception
Exception() constructor
options.traceStack parameter
Non-standard
Exception.getArg
Exception.is
Stack trace
Non-standard
Global
Global() constructor
Global.value
Global.valueOf
Instance
Instance() constructor
Instance.exports
LinkError
LinkError() constructor
Memory
Memory() constructor
shared flag
Memory.buffer
Memory.grow
Module
Module() constructor
compileOptions parameter
customSections() static method
exports() static method
imports() static method
RuntimeError
RuntimeError() constructor
Table
Table() constructor
Table.get
Table.grow
Table.length
Table.set
Tag
Tag() constructor
Tag.type
compileStreaming() static method
compileOptions parameter
compile() static method
compileOptions parameter
instantiateStreaming() static method
compileOptions parameter
instantiate() static method
compileOptions parameter
validate() static method
compileOptions parameter

Legend

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

Full support
Full support
No support
No support
Non-standard. Check cross-browser support before using.
See implementation notes.
User must explicitly enable this feature.

Siehe auch