WebAssembly.Instance() Konstruktor - WebAssembly | MDN
Baseline
Weitgehend verfügbar
Diese Funktion ist gut etabliert und funktioniert auf vielen Geräten und in vielen Browserversionen. Sie ist seit Oktober 2017 browserübergreifend verfügbar.
Der WebAssembly.Instance() Konstruktor erstellt ein neues
Instance-Objekt, das eine zustandsbehaftete, ausführbare Instanz eines
WebAssembly.Module ist.
Warnung:
Da die Instanziierung großer Module kostspielig sein kann, sollten Entwickler den Instance()-Konstruktor nur dann verwenden, wenn eine synchrone Instanziierung unbedingt erforderlich ist; die asynchrone Methode WebAssembly.instantiateStreaming() sollte in allen anderen Fällen verwendet werden.
Syntax
js
new WebAssembly.Instance(module, importObject)
Parameter
module-
Das
WebAssembly.ModuleObjekt, das instanziiert werden soll. importObjectOptional-
Ein Objekt, das die Werte enthält, die in die neu erstellte
Instanceimportiert werden sollen, wie Funktionen oderWebAssembly.MemoryObjekte. Für jeden deklarierten Import desmodulemuss eine passende Eigenschaft vorhanden sein, andernfalls wird einWebAssembly.LinkErrorausgelöst.
Ausnahmen
- Wenn einer der Parameter nicht den korrekten Typ oder die richtige Struktur hat, wird ein
TypeErrorausgelöst. - Wenn die Operation fehlschlägt, wird abhängig von der Ursache des Fehlers entweder ein
WebAssembly.CompileError,WebAssembly.LinkErroroderWebAssembly.RuntimeErrorausgelöst. - Einige Browser können einen
RangeErrorauslö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() Konstruktorfunktion kann aufgerufen werden, um ein gegebenes WebAssembly.Module Objekt synchron zu instanziieren, zum Beispiel:
js
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();
});
Der bevorzugte Weg, um eine Instance zu erhalten, ist jedoch die asynchrone Funktion WebAssembly.instantiateStreaming(), zum Beispiel so:
js
const importObject = {
my_namespace: {
imported_func(arg) {
console.log(arg);
},
},
};
WebAssembly.instantiateStreaming(fetch("simple.wasm"), importObject).then(
(obj) => obj.instance.exports.exported_func(),
);
Spezifikationen
| Spezifikation |
|---|
| WebAssembly JavaScript Interface # dom-instance-instance |
Browser-Kompatibilität
Siehe auch
Help improve MDN
Erfahren Sie, wie Sie beitragen können Diese Seite wurde automatisch aus dem Englischen übersetzt.