WebAssembly.compile()
Baseline
Widely available
*
Cette fonctionnalité est bien établie et fonctionne sur de nombreux appareils et versions de navigateurs. Elle est disponible sur tous les navigateurs depuis octobre 2017.
* Certaines parties de cette fonctionnalité peuvent bénéficier de prise en charge variables.
La méthode statique WebAssembly.compile(), permet de compiler un module (WebAssembly.Module) à partir d'un code binaire WebAssembly. Cette fonction est utile lorsqu'il est nécessaire de compiler un module avant de l'instancier (dans les autres cas, la méthode WebAssembly.instantiate() sera plus pertinente).
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.compile(bufferSource);
Paramètres
bufferSource-
Un tableau typé ou un
ArrayBuffercontenant le bytecode du module WebAssembly qu'on souhaite compiler.
Valeur de retour
Une promesse (Promise) dont la valeur de résolution est une instance de WebAssembly.Module qui représente le module compilé.
Exceptions
- Si
bufferSourcen'est pas un tableau typé, une exceptionTypeErrorsera levée. - Si la compilation échoue, la promesse sera rompue avec une exception
WebAssembly.CompileError.
Exemples
>Utiliser compile()
Dans l'exemple qui suit, on compile le bytecode simple.wasm grâce à la méthode compile() puis on envoie le contenu à un worker grâce à la méthode postMessage().
const worker = new Worker("wasm_worker.js");
fetch("http://developer.mozilla.org/simple.wasm")
.then((response) => response.arrayBuffer())
.then((bytes) => WebAssembly.compile(bytes))
.then((mod) => worker.postMessage(mod));
Note :
Dans la plupart des cas, mieux vaudra utiliser WebAssembly.compileStreaming() qui est plus efficace que compile().
Spécifications
| Specification |
|---|
| WebAssembly JavaScript Interface> # dom-webassembly-compile> |
Compatibilité des navigateurs
Chargement…