WebAssembly.compileStreaming()
The WebAssembly.compileStreaming() static method compiles a WebAssembly.Module directly from a streamed underlying source.
This function is useful if it is necessary to compile a module before it can be instantiated (otherwise, the WebAssembly.instantiateStreaming() function should be used).
Note: Webpages that have strict Content Security Policy (CSP) might block WebAssembly from compiling and executing modules. For more information on allowing WebAssembly compilation and execution, see the script-src CSP.
Syntax
WebAssembly.compileStreaming(source)
Parameters
Return value
A Promise that resolves to a WebAssembly.Module object representing the compiled module.
Exceptions
- If
sourceis not aResponseorPromiseresolving to aResponse, the promise rejects with aTypeError. - If compilation fails, the promise rejects with a
WebAssembly.CompileError. - If the
sourceis aPromisethat rejects, the promise rejects with the error. - If the
source'sResulthas an error (e.g. bad MIME type), the promise rejects with an error.
Examples
Compile streaming
The following example (see our compile-streaming.html demo on GitHub, and view it live also) directly streams a Wasm module from an underlying source then compiles it to a WebAssembly.Module object. Because the compileStreaming() function accepts a promise for a Response object, you can directly pass it a Promise from calling fetch(), without waiting for the promise to fulfill.
const importObject = {
my_namespace: { imported_func: (arg) => console.log(arg) },
};
WebAssembly.compileStreaming(fetch("simple.wasm"))
.then((module) => WebAssembly.instantiate(module, importObject))
.then((instance) => instance.exports.exported_func());
The resulting module instance is then instantiated using
WebAssembly.instantiate(), and the exported function invoked.
Specifications
| Specification |
|---|
| WebAssembly Web API # dom-webassembly-compilestreaming |
Browser compatibility
BCD tables only load in the browser