WebAssembly.compileStreaming()
The WebAssembly.compileStreaming()
function 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
js
WebAssembly.compileStreaming(source)
Parameters
source
-
A
Response
object or a promise that will fulfill with one, representing the underlying source of a Wasm module you want to stream and compile.
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 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 fetch()
call, and it will pass the response into the function when it fulfills.
js
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());
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