Get to know MDN better
Dieser Inhalt wurde automatisch aus dem Englischen übersetzt, und kann Fehler enthalten. Erfahre mehr über dieses Experiment.
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.
Die statische Methode WebAssembly.instantiate() ermöglicht es Ihnen, WebAssembly-Code zu kompilieren und zu instanziieren. Diese Funktion hat zwei Überladungen:
Warnung: Diese Methode ist nicht der effizienteste Weg, um Wasm-Module abzurufen und zu instanziieren. Wenn möglich, sollten Sie die neuere Methode WebAssembly.instantiateStreaming() verwenden, die ein Modul in einem Schritt direkt aus dem Rohbytecode abruft, kompiliert und instanziiert und somit keine Umwandlung in einen ArrayBuffer erfordert.
Ein typisiertes Array oder ein ArrayBuffer, das den Binärcode des zu kompilierenden Wasm-Moduls enthält.
moduleDas WebAssembly.Module-Objekt, das instanziiert werden soll.
importObject OptionalEin Objekt, das die Werte enthält, die in die neu erstellte Instance importiert werden sollen, wie z.B. Funktionen oder WebAssembly.Memory-Objekte. Es muss für jeden deklarierten Import des kompilierten Moduls eine passende Eigenschaft geben, andernfalls wird ein WebAssembly.LinkError ausgelöst.
compileOptions OptionalEin Objekt, das Kompilierungsoptionen enthält. Eigenschaften können beinhalten:
builtins OptionalEin 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 OptionalEin 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.
Wird ein bufferSource übergeben, gibt es ein Promise zurück, das sich in ein ResultObject auflöst, das zwei Felder enthält:
Wird ein module übergeben, gibt es ein Promise zurück, das sich in ein WebAssembly.Instance-Objekt auflöst.
Hinweis: In den meisten Fällen möchten Sie wahrscheinlich WebAssembly.instantiateStreaming() verwenden, da es effizienter ist als instantiate().
Nach dem Abrufen einiger WebAssembly-Bytes mit fetch, kompilieren und instanziieren wir das Modul mit der Funktion WebAssembly.instantiate(), indem wir eine JavaScript-Funktion im Prozess in das WebAssembly-Modul importieren. Danach rufen wir eine exportierte WebAssembly-Funktion auf, die von der Instance exportiert wurde.
Hinweis: Dieses Beispiel finden Sie auch unter index.html auf GitHub (sehen Sie es auch live).
Das folgende Beispiel (siehe unser index-compile.html Demo auf GitHub, und sehen Sie es live auch) kompiliert den geladenen simple.wasm-Bytecode mit der Methode WebAssembly.compileStreaming() und sendet ihn dann an einen Worker mit postMessage().
Im Worker (siehe wasm_worker.js) definieren wir ein Import-Objekt, das das Modul verwenden soll, und richten dann einen Ereignishandler ein, um das Modul vom Hauptthread zu empfangen. Wenn das Modul empfangen wird, erstellen wir eine Instanz daraus mit der Methode WebAssembly.instantiate() und rufen eine exportierte Funktion aus diesem auf.
Dieses Beispiel aktiviert JavaScript-String-Builtins und importierte globale String-Konstanten beim Kompilieren und Instanziieren des Wasm-Moduls mit instantiate(), bevor die exportierte main()-Funktion ausgeführt wird (die "hello world!" in die Konsole protokolliert). Sehen Sie es live laufen.
| WebAssembly JavaScript Interface # dom-webassembly-instantiate |
JavaScript aktivieren, um diese Browser-Kompatibilitätstabelle anzuzeigen.
Der Bauplan für ein besseres Internet.
Besuche die gemeinnützige Muttergesellschaft der Mozilla Corporation, die Mozilla Foundation.
Teile dieses Inhalts sind ©1998–2026 von einzelnen mozilla.org-Mitwirkenden. Inhalte sind verfügbar unter einer Creative-Commons-Lizenz.