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.
* Some parts of this feature may have varying levels of support.
Die statische Methode WebAssembly.compileStreaming()
kompiliert ein WebAssembly.Module
direkt aus einer gestreamten zugrunde liegenden Quelle. Diese Funktion ist nützlich, wenn es notwendig ist, ein Modul zu kompilieren, bevor es instanziiert werden kann (ansonsten sollte die Funktion WebAssembly.instantiateStreaming()
verwendet werden).
Hinweis: Webseiten, die eine strikte Content Security Policy (CSP) verwenden, könnten die Kompilierung und Ausführung von WebAssembly-Modulen blockieren. Für weitere Informationen darüber, wie Sie die Kompilierung und Ausführung von WebAssembly erlauben, lesen Sie die script-src CSP.
Syntax
WebAssembly.compileStreaming(source)
WebAssembly.compileStreaming(source, compileOptions)
Parameter
source
-
Ein
Response
-Objekt oder ein Promise, das mit einem solchen erfüllt wird und die zugrunde liegende Quelle eines Wasm-Moduls darstellt, das Sie streamen und kompilieren möchten. compileOptions
Optional-
Ein Objekt, das Kompilierungsoptionen enthält. Eigenschaften können beinhalten:
builtins
Optional-
Ein Array von Strings, das die Verwendung von JavaScript builtins im kompilierten Wasm-Modul ermöglicht. Die Strings definieren die builtins, die Sie aktivieren möchten. Derzeit ist der einzige verfügbare Wert
"js-string"
, der JavaScript String builtins aktiviert. importedStringConstants
Optional-
Ein String, der einen Namensraum für importierte globale String-Konstanten angibt. Diese Eigenschaft muss angegeben werden, wenn Sie importierte globale String-Konstanten im Wasm-Modul verwenden möchten.
Rückgabewert
Ein Promise
, das zu einem WebAssembly.Module
-Objekt, das das kompilierte Modul darstellt, aufgelöst wird.
Ausnahmen
- Wenn
source
weder einResponse
noch einPromise
, das sich zu einemResponse
auflöst, ist, wird das Promise mit einemTypeError
abgelehnt. - Wenn die Kompilierung fehlschlägt, wird das Promise mit einem
WebAssembly.CompileError
abgelehnt. - Wenn die
source
einPromise
ist, das abgelehnt wird, wird das Promise mit dem Fehler abgelehnt. - Wenn das
Result
dersource
einen Fehler aufweist (z.B. ungültiger MIME-Typ), wird das Promise mit einem Fehler abgelehnt.
Beispiele
Streaming kompilieren
Das folgende Beispiel (siehe unser compile-streaming.html Demo auf GitHub, und sehen Sie es live) streamt direkt ein Wasm-Modul aus einer zugrunde liegenden Quelle und kompiliert es dann zu einem WebAssembly.Module
-Objekt. Da die Funktion compileStreaming()
ein Promise
für ein Response
-Objekt akzeptiert, können Sie ihr direkt ein Promise
von einem Aufruf von fetch()
übergeben, ohne auf die Erfüllung des Promises 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());
Das resultierende Modulobjekt wird dann mit WebAssembly.instantiate()
instanziiert, und die exportierte Funktion wird aufgerufen.
Aktivierung von JavaScript builtins und globalen String-Importen
Dieses Beispiel aktiviert JavaScript String builtins und importierte globale String-Konstanten, wenn das Wasm-Modul mit compileStreaming()
kompiliert wird, bevor es mit instantiate()
instanziiert und dann die exportierte main()
-Funktion ausgeführt wird (die "hello world!"
in der Konsole protokolliert). Siehe es live in Aktion.
const importObject = {
// Regular import
m: {
log: console.log,
},
};
const compileOptions = {
builtins: ["js-string"], // Enable JavaScript string builtins
importedStringConstants: "string_constants", // Enable imported global string constants
};
WebAssembly.compileStreaming(fetch("log-concat.wasm"), compileOptions)
.then((module) => WebAssembly.instantiate(module, importObject))
.then((instance) => instance.exports.main());
Spezifikationen
Specification |
---|
WebAssembly Web API # dom-webassembly-compilestreaming |
Browser-Kompatibilität
Report problems with this compatibility data on GitHubdesktop | mobile | server | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
compileStreaming() static method | ||||||||||||||
compileOptions parameter |
Legend
Tip: you can click/tap on a cell for more information.
- Full support
- Full support
- No support
- No support