Dieser Inhalt wurde automatisch aus dem Englischen übersetzt, und kann Fehler enthalten. Erfahre mehr über dieses Experiment.

View in English Always switch to English

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 fungiert als Namensraum 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 Namensraumobjekt für mathematische Konstanten und Funktionen ist, oder mit Intl, das das Namensraumobjekt für Internationalisierungs-Konstruktoren und andere sprachsensitive Funktionen ist.

Beschreibung

Die Hauptverwendungen für das WebAssembly-Objekt sind:

Schnittstellen

WebAssembly.CompileError

Gibt einen Fehler beim Dekodieren oder Validieren von WebAssembly an.

WebAssembly.Global

Repräsentiert eine globale Variableninstanz, die sowohl von JavaScript aus zugänglich ist als auch über eine oder mehrere WebAssembly.Module-Instanzen importiert/exportiert werden kann. Dies ermöglicht das dynamische 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 anpassbares ArrayBuffer ist, der die rohen Bytes des Speichers hält, auf die eine WebAssembly-Instance zugreift.

WebAssembly.Module

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

WebAssembly.RuntimeError

Fehlertyp, der immer dann ausgelöst wird, wenn WebAssembly eine trap angibt.

WebAssembly.Suspending

Repräsentiert eine aussetzende Funktion — eine asynchrone (Promise-basierte) JavaScript-Funktion, die, wenn sie in ein Wasm-Modul importiert und von innen aufgerufen wird, dazu führt, dass die Ausführung ausgesetzt wird, bis das Versprechen erfüllt ist.

WebAssembly.Table

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

WebAssembly.Tag

Ein Objekt, das eine Art von WebAssembly-Ausnahme darstellt.

WebAssembly.Exception

Ein WebAssembly-Ausnahmeobjekt, das innerhalb und ü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 — damit können Ausnahmen, die in JavaScript ausgelöst werden, von innen in einem Wasm-Modul behandelt werden.

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 einem gestreamten zugrundeliegenden Quellcode und lässt die Instanziierung als separaten Schritt.

WebAssembly.instantiate()

Die primäre API zum Kompilieren und Instanziieren von WebAssembly-Code, die sowohl ein Module als auch dessen erste Instance zurückgibt.

WebAssembly.instantiateStreaming()

Kompiliert und instanziiert ein WebAssembly-Modul direkt aus einem gestreamten zugrundeliegenden Quellcode und gibt sowohl ein Module als auch dessen erste Instance zurück.

WebAssembly.promising()

Verpackt eine exportierte Wasm-Funktion, die von einem asynchronen Vorgang abhängt (d.h. eine importierte aussetzende Funktion, die über den Konstruktor WebAssembly.Suspending() erstellt wurde) und verwandelt sie in ein Promise.

WebAssembly.validate()

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

Beispiele

Streamen eines Wasm-Moduls, dann kompilieren und instanziieren

Das folgende Beispiel (siehe unser instantiate-streaming.html Demo auf GitHub und sehen Sie es live auch) streamt direkt ein Wasm-Modul aus einem zugrundeliegenden Quellcode, kompiliert und instanziiert es und erfüllt das Versprechen mit einem ResultObject. Da die instantiateStreaming()-Funktion ein Versprechen für ein Response-Objekt akzeptiert, können Sie direkt einen fetch()-Aufruf übergeben und es wird die Antwort in die Funktion einfügen, 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 aufgerufen und die enthaltene exportierte Funktion ausgeführt.

Spezifikationen

Spezifikation
WebAssembly JavaScript Interface
# webassembly-namespace

Browser-Kompatibilität

Siehe auch