WebAssembly.compileStreaming()
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.
La méthode statique WebAssembly.compileStreaming()
permet de compiler un module WebAssembly (c'est-à-dire un objet WebAssembly.Module
) depuis un flux source. Cette fonction est utile si on doit compiler un module avant de l'instancier séparement, sinon on utilisera plutôt WebAssembly.instantiateStreaming()
.
Note : Les pages web qui utilisent une CSP stricte peuvent bloquer la compilation WebAssembly et l'exécution des modules. Pour plus d'informations pour l'autorisation de la compilation et de l'exécution, voir la directive CSP script-src
.
Syntaxe
WebAssembly.compileStreaming(source)
Paramètres
Valeur de retour
Un objet Promise
dont la valeur de résolution est un objet WebAssembly.Module
qui représente le module compilé.
Exceptions
- Si
source
n'est pas un objetResponse
ou une promesse qui se résout enResponse
, la promesse est rejetée avec une exceptionTypeError
. - Si la compilation échoue, la promesse est rejetée avec une exception
WebAssembly.CompileError
. - Si
source
est une promesse qui échoue, la promesse renvoyée par cette méthode échoue avec cette même erreur. - Si l'objet
Result
de la source a une erreur (par exemple un mauvais type MIME), la promesse est rejetée avec une erreur.
Exemples
Dans l'exemple suivant (également disponible sur GitHub : compile-streaming.html
et avec le résultat live), on récupère un flux dedpuis un module .wasm puis on le compile en un objet WebAssembly.Module
. La fonction compileStreaming()
acceptant une promesse pour un objet Response
, on peut directement passer l'appel à fetch()
qui transfèrera la réponse dès que la promesse sera tenue.
const importObject = { imports: { imported_func: (arg) => console.log(arg) } };
WebAssembly.compileStreaming(fetch("simple.wasm"))
.then((module) => WebAssembly.instantiate(module, importObject))
.then((instance) => instance.exports.exported_func());
Le module est ensuite instancié grâce à la fonction WebAssembly.instantiate()
. Enfin, on appelle la fonction exportée.
Spécifications
Specification |
---|
WebAssembly Web API # dom-webassembly-compilestreaming |
Compatibilité des navigateurs
BCD tables only load in the browser