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.
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
source
is not aResponse
orPromise
resolving to aResponse
, the promise rejects with aTypeError
. - If compilation fails, the promise rejects with a
WebAssembly.CompileError
. - If the
source
is aPromise
that rejects, the promise rejects with the error. - If the
source
'sResult
has 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