WebAssembly.instantiateStreaming()

La fonction WebAssembly.instantiateStreaming() permet de compiler et d'instancier un module WebAssembly depuis un flux source. C'est la méthode la plus efficace, et la plus optimisée, permettant de charger du code WebAssembly.

Syntaxe

Promise<ResultObject> WebAssembly.instantiateStreaming(source, importObject);

Paramètres

source
Un objet Response ou une promesse qui sera tenue avec une valeur Response qui représente la source du module .wasm dont on souhaite récupérer le flux, la compiler puis l'instanciere.
importObject Facultatif
Un objet qui contient les valeurs qui doivent être importées dans le nouvel objet Instance résultant. Cela peut être des fonctions ou des objets WebAssembly.Memory. Il est nécessaire qu'il y ait une propriété correspondante pour chaque import déclaré dans le module compilé, sinon, une exception WebAssembly.LinkError sera levée.

Valeur de retour

Un objet Promise dont la valeur de résolution est un objet ResultObject contenant deux champs :

Exceptions

Examples

Dans l'exemple suivant (également disponible sur GitHub : instantiate-streaming.html et avec le résultat live), on récupère le flux d'un module .wasm depuis une source, on le compile et on l'instancie. La promesse est alors résolue avec un objet ResultObject. La méthode instantiateStreaming()  acceptant une promesse fournissant un objet Response, on peut directement l'appel de WindowOrWorkerGlobalScope.fetch() en argument qui transfèrera la réponse lorsque la promesse résultante sera tenue.

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

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

Ensuite, on accède au champ instance de l'objet ResultObject afin de pouvoir invoquer une des fonctions exportées.

Spécifications

Spécification État Commentaires
WebAssembly features for web embedding
La définition de 'instantiateStreaming()' dans cette spécification.
Projet Brouillon de définition initiale.

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 61Edge Support complet 16Firefox Support complet 58IE Aucun support NonOpera Support complet 47Safari Aucun support NonWebView Android Support complet 61Chrome Android Support complet 61Edge Mobile Aucun support NonFirefox Android Support complet 58Opera Android ? Safari iOS Aucun support NonSamsung Internet Android Aucun support Nonnodejs Aucun support Non

Légende

Support complet  
Support complet
Aucun support  
Aucun support
Compatibilité inconnue  
Compatibilité inconnue

Voir aussi

Étiquettes et contributeurs liés au document

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