WebAssembly
Baseline
Weitgehend verfügbar
*
Diese Funktion ist gut etabliert und funktioniert auf vielen Geräten und in vielen Browserversionen. Sie ist seit Oktober 2017 browserübergreifend verfügbar.
* Einige Teile dieser Funktion werden möglicherweise unterschiedlich gut unterstützt.
Das WebAssembly JavaScript-Objekt dient als Namensraum für alle WebAssembly-bezogenen Funktionen.
Anders als die meisten anderen globalen Objekte ist WebAssembly kein Konstruktor (es ist kein Funktionsobjekt). Sie können es mit Math vergleichen, das ebenfalls ein Namensraumobjekt für mathematische Konstanten und Funktionen ist, oder mit Intl, das das Namensraumobjekt für Internationalisierungs-Konstruktoren und andere sprachempfindliche Funktionen ist.
Beschreibung
Die Hauptanwendungen des WebAssembly-Objekts sind:
- Laden von WebAssembly-Code mit der Funktion
WebAssembly.instantiate(). - Erstellen neuer Speicher- und Tabelleninstanzen über die Konstruktoren
WebAssembly.Memory()/WebAssembly.Table(). - Bereitstellen von Möglichkeiten, um Fehler, die in WebAssembly auftreten, zu behandeln, über die Konstruktoren
WebAssembly.CompileError()/WebAssembly.LinkError()/WebAssembly.RuntimeError().
Schnittstellen
WebAssembly.CompileError-
Gibt einen Fehler während des Decodings oder der Validierung von WebAssembly an.
WebAssembly.Global-
Stellt eine Instanz einer globalen Variablen dar, die sowohl von JavaScript aus zugänglich als auch importierbar/exportierbar über ein oder mehrere
WebAssembly.Module-Instanzen ist. Dies ermöglicht dynamisches Verknüpfen mehrerer Module. WebAssembly.Instance-
Ist eine zustandsbehaftete, ausführbare Instanz eines
WebAssembly.Module. WebAssembly.LinkError-
Gibt einen Fehler während der Modulinstanziierung an (außer Traps aus der Startfunktion).
WebAssembly.Memory-
Ein Objekt, dessen
buffer-Eigenschaft ein skalierbarerArrayBufferist, der die Rohdaten des Speichers enthält, auf den eine WebAssembly-Instancezugreift. WebAssembly.Module-
Enthält zustandslosen WebAssembly-Code, der vom Browser bereits kompiliert wurde und effizient mit Workers geteilt und mehrfach instanziiert werden kann.
WebAssembly.RuntimeError-
Fehlerart, die immer dann ausgelöst wird, wenn WebAssembly eine Trap angibt.
WebAssembly.Table-
Eine arrayähnliche Struktur, die eine WebAssembly-Tabelle darstellt, die Referenzen speichert, wie z.B. Funktionsreferenzen.
WebAssembly.Tag-
Ein Objekt, das einen Typ einer WebAssembly-Ausnahme darstellt.
WebAssembly.Exception-
Ein WebAssembly-Ausnahmeobjekt, das sowohl innerhalb als auch über WebAssembly/JavaScript-Grenzen hinweg geworfen, gefangen und erneut geworfen werden kann.
Statische Eigenschaften
WebAssembly.JSTag-
Ein eingebauter
WebAssembly.Tag, der Ausnahmen darstellt, die im JavaScript-Host ausgelöst werden — er ermöglicht die Behandlung von Ausnahmen, die in JavaScript ausgelöst werden, von innerhalb eines Wasm-Moduls aus.
Statische Methoden
WebAssembly.compile()-
Kompiliert ein
WebAssembly.Moduleaus WebAssembly-Binärcode, wobei die Instanziierung als separater Schritt verbleibt. WebAssembly.compileStreaming()-
Kompiliert ein
WebAssembly.Moduledirekt aus einer gestreamten zugrunde liegenden Quelle, wobei die Instanziierung als separater Schritt verbleibt. WebAssembly.instantiate()-
Die primäre API zum Kompilieren und Instanziieren von WebAssembly-Code, die sowohl ein
Moduleals auch seine ersteInstancezurückgibt. WebAssembly.instantiateStreaming()-
Kompiliert und instanziiert ein WebAssembly-Modul direkt aus einer gestreamten zugrunde liegenden Quelle, wobei sowohl ein
Moduleals auch seine ersteInstancezurückgegeben werden. WebAssembly.validate()-
Validiert ein gegebenes typisiertes Array von WebAssembly-Binärcode und gibt zurück, ob die Bytes gültiger WebAssembly-Code (
true) sind oder nicht (false).
Beispiele
>Streamen Sie ein Wasm-Modul, dann kompilieren und instanziieren Sie es
Das folgende Beispiel (siehe unser instantiate-streaming.html-Demo auf GitHub und sehen Sie es live an) streamt direkt ein Wasm-Modul aus einer zugrunde liegenden Quelle, dann kompiliert und instanziiert es, wobei das Versprechen mit einem ResultObject erfüllt wird. Da die Funktion instantiateStreaming() ein Versprechen für ein Response-Objekt akzeptiert, können Sie direkt einen fetch()-Aufruf übergeben, und es wird die Antwort in die Funktion übergeben, wenn es erfüllt wird.
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 aufgerufen, und die enthaltene exportierte Funktion wird ausgeführt.
Spezifikationen
| Spezifikation |
|---|
| WebAssembly JavaScript Interface> # webassembly-namespace> |