Das WebAssembly JavaScript Objekt existiert als Namensraum für alle WebAssembly-bezogenen Funktionalitäten.
Anders als die meisten anderen globalen Objekte, ist WebAssembly kein Konstruktor (es ist kein Funktionsobjekt). Es kann mit Math verglichen werden, welches ebenfalls einen Namensraum für mathematische Konstanten und Funktionen bildet. Oder mit Intl, welches den Namensraum für die Internationalisierunges API mit sprachabhängigen Funktionen bildet.
Beschreibung
Die primäre Verwendung des WebAssembly Objekts sind:
- Laden von WebAssembly Code, verwenden der
WebAssembly.instantiate()Funktion. - Neue Speicher- und Tabelleninstanzen mittels der
WebAssembly.Memory()/WebAssembly.Table()Konstruktoren. - Bereitstellen von Einrichtungen zur Fehlerbehandlung, die in WebAssembly auftreten, mittels der
WebAssembly.CompileError()/WebAssembly.LinkError()/WebAssembly.RuntimeError()Konstruktoren.
Methoden
WebAssembly.instantiate()- Die primäre API für das Kompilieren und Instanziieren des WebAssembly Codes. Der Rückgabewert als
Promiseergibt einModuleals auch die ersteInstance. WebAssembly.instantiateStreaming()- Kompiliert und instanziiert ein WebAssembly-Modul direkt aus einer Streamingquelle, mit dem Rückgabewert als
Promiseergibt sich einModuleals auch die ersteInstance. WebAssembly.compile()- Kompiliert ein
WebAssembly.Moduleaus dem WebAssembly Binärcode, wodurch die Instanziierung als separater Schritt durchgeführt werden kann. WebAssembly.compileStreaming()- Kompiliert ein
WebAssembly.Moduledirekt aus einer Streamingquelle, wodurch die Instanziierung als separater Schritt durchgeführt werden kann. WebAssembly.validate()- Validiert das gegebene, typisierte Array eines WebAssembly Binärcodes. Gibt zurück, ob die Bytes validen WebAssembly Code darstellen (
true) oder nicht (false).
Konstruktoren
WebAssembly.Global()- Erzeugt ein neues WebAssembly
GlobalObjekt. WebAssembly.Module()- Erzeugt ein neues WebAssembly
ModuleObjekt. WebAssembly.Instance()- Erzeugt ein neues WebAssembly
InstanceObjekt. WebAssembly.Memory()- Erzeugt ein neues WebAssembly
MemoryObjekt. WebAssembly.Table()- Erzeugt ein neues WebAssembly
TableObjekt. WebAssembly.CompileError()- Erzeugt ein neues WebAssembly
CompileErrorObjekt. WebAssembly.LinkError()- Erzeugt ein neues WebAssembly
LinkErrorObjekt. WebAssembly.RuntimeError()- Erzeugt ein neues WebAssembly
RuntimeErrorObjekt.
Beispiele
Das folgende Beispiel (siehe instantiate-streaming.html Demo auf GitHub, siehe auch live) streamt ein .wasm Modul direkt aus einer zugrunde liegenden Quelle, um es dann zu kompilieren und zu instanziieren. Das Promise erfüllt sich mit einem ResultObject. Weil die instantiateStreaming() Funktion ein Promise für ein Response akzeptiert, kann ihr ein WindowOrWorkerGlobalScope.fetch() direkt übergeben werden, welches die Antwort an die Funktion weitergibt, sobald das Promise sich erfüllt.
var importObject = { imports: { imported_func: arg => console.log(arg) } };
WebAssembly.instantiateStreaming(fetch('simple.wasm'), importObject)
.then(obj => obj.instance.exports.exported_func());
Auf die ResultObject Instanz wird damit zugegriffen und die beinhaltete, exportierte Funktion aufgerufen.
Spezifikationen
| Specification | Status | Comment |
|---|---|---|
| WebAssembly JavaScript Interface Die Definition von 'WebAssembly' in dieser Spezifikation. |
Arbeitsentwurf | Initial draft definition. |
Browserkompatibilität
BCD tables only load in the browser