Constructeur WebAssembly.Instance()
Le constructeur WebAssembly.Instance()
crée un nouvel objet Instance
qui représente une instance sans état et exécutable d'un WebAssembly.Module
.
Syntaxe
Attention : Étant donné que l'instanciation de grands modules peut être coûteuse, il est préférable d'utiliser le constructeur Instance()
uniquement lorsqu'une instanciation synchrone est nécessaire. Par défaut et dans tous les autres cas, on privilégiera l'utilisation de la méthode asynchrone WebAssembly.instantiateStreaming()
.
new WebAssembly.Instance(module, importObject);
Paramètres
- module
-
L'objet
WebAssembly.Module
qu'on souhaite instancier. - importObject Facultatif
-
Un objet contenant les valeurs à importer dans l'instance nouvellement créée telles que des fonctions ou des objets
WebAssembly.Memory
. Il doit y avoir une propriété correspondante pour chaque import déclaré demodule
ou une exceptionWebAssembly.LinkError
sera levée.
Exemples
Instancier un module WebAssembly de façon synchrone
Le constructeur WebAssembly.Instance()
peut être appelé de façon synchrone afin d'instancier un objet WebAssembly.Module
donné, par exemple :
const importObject = {
imports: {
imported_func: function (arg) {
console.log(arg);
},
},
};
fetch("simple.wasm")
.then((response) => response.arrayBuffer())
.then((bytes) => {
let mod = new WebAssembly.Module(bytes);
let instance = new WebAssembly.Instance(mod, importObject);
instance.exports.exported_func();
});
Toutefois, la méthode à privilégier pour obtenir une Instance
est d'utiliser la fonction asynchrone WebAssembly.instantiateStreaming()
comme ceci :
const importObject = {
imports: {
imported_func: function (arg) {
console.log(arg);
},
},
};
WebAssembly.instantiateStreaming(fetch("simple.wasm"), importObject).then(
(obj) => obj.instance.exports.exported_func(),
);
Spécifications
Specification |
---|
WebAssembly JavaScript Interface # dom-instance-instance |
Compatibilité des navigateurs
BCD tables only load in the browser