WebAssembly.Instance() Konstruktor
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.
Der WebAssembly.Instance()
Konstruktor erstellt ein neues
Instance
Objekt, das eine zustandsbehaftete, ausführbare Instanz eines
WebAssembly.Module
ist.
Syntax
Warnung: Da die Instanziierung größerer Module aufwendig sein kann,
sollten Entwickler den Instance()
Konstruktor nur verwenden, wenn eine synchrone
Instanziierung absolut erforderlich ist; die asynchrone
Methode WebAssembly.instantiateStreaming()
sollte in allen anderen
Fällen verwendet werden.
new WebAssembly.Instance(module, importObject);
Parameter
module
-
Das zu instanziierende
WebAssembly.Module
Objekt. importObject
Optional-
Ein Objekt, das die Werte enthält, die in die neu erstellte
Instance
importiert werden sollen, wie z.B. Funktionen oderWebAssembly.Memory
Objekte. Es muss eine übereinstimmende Eigenschaft für jeden deklarierten Import vonmodule
vorhanden sein, andernfalls wird einWebAssembly.LinkError
ausgelöst.
Ausnahmen
-
Wenn einer der Parameter nicht den korrekten Typ oder die korrekte Struktur hat, wird ein
TypeError
ausgelöst. -
Wenn die Operation fehlschlägt, wird je nach Ursache des Fehlers einer von
WebAssembly.CompileError
,WebAssembly.LinkError
oderWebAssembly.RuntimeError
ausgelöst. - Einige Browser können einen
RangeError
auslösen, da sie die Kompilierung und Instanziierung von Wasm mit großen Puffern im UI-Thread verbieten.
Beispiele
Synchrone Instanziierung eines WebAssembly Moduls
Die WebAssembly.Instance()
Konstrukturfunktion kann aufgerufen werden, um ein gegebenes WebAssembly.Module
Objekt synchron zu instanziieren, zum Beispiel:
const importObject = {
my_namespace: {
imported_func(arg) {
console.log(arg);
},
},
};
fetch("simple.wasm")
.then((response) => response.arrayBuffer())
.then((bytes) => {
const mod = new WebAssembly.Module(bytes);
const instance = new WebAssembly.Instance(mod, importObject);
instance.exports.exported_func();
});
Die bevorzugte Methode, um eine Instance
zu erhalten, ist jedoch über die asynchrone
Funktion WebAssembly.instantiateStreaming()
, zum Beispiel so:
const importObject = {
my_namespace: {
imported_func(arg) {
console.log(arg);
},
},
};
WebAssembly.instantiateStreaming(fetch("simple.wasm"), importObject).then(
(obj) => obj.instance.exports.exported_func(),
);
Spezifikationen
Specification |
---|
WebAssembly JavaScript Interface # dom-instance-instance |
Browser-Kompatibilität
BCD tables only load in the browser