Constructeur WebAssembly.Instance()
Baseline
Widely available
Cette fonctionnalité est bien établie et fonctionne sur de nombreux appareils et versions de navigateurs. Elle est disponible sur tous les navigateurs depuis octobre 2017.
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.Modulequ'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é demoduleou une exceptionWebAssembly.LinkErrorsera 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
Chargement…