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é de module ou une exception WebAssembly.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: Exception Handling
# dom-instance-instance

Compatibilité des navigateurs

BCD tables only load in the browser

Voir aussi