WebAssembly.Instance()

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.

Un objet WebAssembly.Instance représente un objet exécutable, avec un état, qui est une instance d'un module WebAssembly. Un objet Instance contient l'ensemble des fonctions WebAssembly exportées qui permettent d'invoquer du code WebAssembly depuis du code JavaScript.

Constructeur

WebAssembly.Instance()

Crée un nouvel objet Instance.

Propriétés des instances

Instance.prototype.exports

Renvoie un objet dont les propriétés sont les fonctions exportées par l'instance de module WebAssembly afin qu'elles puissent être récupérées et utilisées en JavaScript. Cette propriété est uniquement accessible en lecture seule.

Exemples

Instancier un module WebAssembly de façon synchrone

Le constructeur WebAssembly.Instance() peut être appelé afin d'instancier un objet WebAssembly.Module de façon synchrone. Par exemple :

js
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();
  });

La façon préconisée de récupérer un objet Instance est asynchrone, par exemple en utilisant la fonction WebAssembly.instantiateStreaming() de cette façon :

js
const importObject = {
  imports: {
    imported_func: function (arg) {
      console.log(arg);
    },
  },
};

WebAssembly.instantiateStreaming(fetch("simple.wasm"), importObject).then(
  (obj) => obj.instance.exports.exported_func(),
);

Cet exemple illustre également comment la propriété exports est utilisée afin d'accéder aux fonctions exportées.

Spécifications

Specification
WebAssembly JavaScript Interface
# instances

Compatibilité des navigateurs

BCD tables only load in the browser

Voir aussi