WebAssembly.Module.exports()

La fonction WebAssembly.exports() renvoie un tableau qui contient les descriptions des exports déclarés pour un module donné.

Syntaxe

var exports = WebAssembly.Module.exports(module);

Paramètres

module
Un objet WebAssembly.Module.

Valeur de retour

Un tableau qui contient des objets représentants les fonctions exportés du module passé en argument.

Exceptions

Si l'argument n'est pas une instance de WebAssembly.Module, une exception TypeError sera levée.

Exemples

Dans l'exemple suivant (basé sur le fichier index-compile.html disponible sur GitHub avec la démonstration correspondante), on compile le bytecode simple.wasm grâce à la fonction WebAssembly.compileStreaming() puis on envoie le résultat à un worker grâce à la méthode postMessage().

var worker = new Worker("wasm_worker.js");

WebAssembly.compileStreaming(fetch("simple.wasm"))
.then(mod =>
  worker.postMessage(mod)
);

Dans le worker (cf. wasm_worker.js), on définit un objet d'import pour le module puis on paramètre un gestionnaire d'évènement afin de recevoir le module depuis le thread principal. Lorsqu'on reçoit le module, on en crée une instance via la méthode WebAssembly.Instantiate() puis on appelle une fonction exportée et enfin, on affiche les informations relatives aux exports disponibles grâce à WebAssembly.Module.exports.

var importObject = {
  imports: {
    imported_func: function(arg) {
      console.log(arg);
    }
  }
};

onmessage = function(e) {
  console.log('module reçu du thread principal');
  var mod = e.data;

  WebAssembly.instantiate(mod, importObject).then(function(instance) {
    instance.exports.exported_func();
  });

  var exports = WebAssembly.Module.exports(mod);
  console.log(exports[0]);
};

La valeur exports[0] ressemblera alors à :

{ name: "exported_func", kind: "function" }

Spécifications

Spécification État Commentaires
WebAssembly JavaScript Interface
La définition de 'exports()' dans cette spécification.
Version de travail Brouillon de définition initiale pour WebAssembly.

Compatibilité des navigateurs

Update compatibility data on GitHub
OrdinateurMobileServeur
ChromeEdgeFirefoxInternet ExplorerOperaSafariWebview AndroidChrome pour AndroidEdge MobileFirefox pour AndroidOpera pour AndroidSafari pour iOSSamsung InternetNode.js
Support simpleChrome Support complet 57Edge Support complet 16Firefox Support complet 52
Notes
Support complet 52
Notes
Notes Disabled in the Firefox 52 Extended Support Release (ESR).
IE Aucun support NonOpera Support complet 44Safari Support complet 11WebView Android Support complet 57Chrome Android Support complet 57Edge Mobile Support complet Oui
Désactivée
Support complet Oui
Désactivée
Désactivée This feature is behind the Experimental JavaScript Features preference.
Firefox Android Support complet 52
Notes
Support complet 52
Notes
Notes Disabled in the Firefox 52 Extended Support Release (ESR).
Opera Android ? Safari iOS Support complet 11Samsung Internet Android Support complet 7.0nodejs Support complet 8.0.0

Légende

Support complet  
Support complet
Aucun support  
Aucun support
Compatibilité inconnue  
Compatibilité inconnue
Voir les notes d'implémentation.
Voir les notes d'implémentation.
Une action explicite de l'utilisateur est nécessaire pour activer cette fonctionnalité.
Une action explicite de l'utilisateur est nécessaire pour activer cette fonctionnalité.

Voir aussi

Étiquettes et contributeurs liés au document

Contributeurs à cette page : SphinxKnight
Dernière mise à jour par : SphinxKnight,