WebAssembly.compileStreaming()

Die WebAssembly.compileStreaming() statische Methode kompiliert ein WebAssembly.Module direkt aus einer gestreamten zugrundeliegenden Quelle. Diese Funktion ist nützlich, wenn es notwendig ist, ein Modul zu kompilieren, bevor es instanziiert werden kann (ansonsten sollte die WebAssembly.instantiateStreaming() Funktion verwendet werden).

Hinweis: Webseiten mit einer strengen Content Security Policy (CSP) könnten verhindern, dass WebAssembly-Module kompiliert und ausgeführt werden. Für weitere Informationen darüber, wie man die Kompilierung und Ausführung von WebAssembly erlaubt, siehe die script-src CSP.

Syntax

js
WebAssembly.compileStreaming(source)

Parameter

source

Ein Response Objekt oder ein Versprechen, das mit einem erfüllt wird, das die zugrundeliegende Quelle eines zu streamenden und zu kompilierenden Wasm-Moduls darstellt.

Rückgabewert

Ein Promise, das zu einem WebAssembly.Module Objekt aufgelöst wird, das das kompilierte Modul darstellt.

Ausnahmen

  • Wenn source kein Response-Objekt oder ein Promise ist, das in ein Response-Objekt aufgelöst wird, lehnt das Promise mit einem TypeError ab.
  • Wenn die Kompilierung fehlschlägt, lehnt das Promise mit einem WebAssembly.CompileError ab.
  • Wenn das source-Versprechen abgelehnt wird, lehnt das Promise mit dem Fehler ab.
  • Wenn das Ergebnis von source einen Fehler aufweist (z. B. falscher MIME-Typ), lehnt das Promise mit einem Fehler ab.

Beispiele

Streaming kompilieren

Das folgende Beispiel (siehe unseren compile-streaming.html Demo auf GitHub, und sehen Sie es live) streamt direkt ein Wasm-Modul aus einer zugrundeliegenden Quelle und kompiliert es zu einem WebAssembly.Module-Objekt. Da die compileStreaming()-Funktion ein Versprechen für ein Response Objekt akzeptiert, können Sie direkt ein Promise von einem Aufruf von fetch() übergeben, ohne auf die Erfüllung des Versprechens zu warten.

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

WebAssembly.compileStreaming(fetch("simple.wasm"))
  .then((module) => WebAssembly.instantiate(module, importObject))
  .then((instance) => instance.exports.exported_func());

Die resultierende Modulinstanz wird dann mittels WebAssembly.instantiate() instanziiert und die exportierte Funktion aufgerufen.

Spezifikationen

Specification
WebAssembly Web API
# dom-webassembly-compilestreaming

Browser-Kompatibilität

BCD tables only load in the browser

Siehe auch