WebAssembly.compileStreaming()
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.
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
WebAssembly.compileStreaming(source)
Parameter
Rückgabewert
Ein Promise
, das zu einem WebAssembly.Module
Objekt aufgelöst wird, das das kompilierte Modul darstellt.
Ausnahmen
- Wenn
source
keinResponse
-Objekt oder einPromise
ist, das in einResponse
-Objekt aufgelöst wird, lehnt das Promise mit einemTypeError
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.
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
- WebAssembly Überblick-Seite
- WebAssembly-Konzepte
- Verwendung der WebAssembly JavaScript-API