The WebAssembly.compileStreaming()
function compiles a WebAssembly.Module
directly from a streamed underlying source. This function is useful if it is necessary to a compile a module before it can be instantiated (otherwise, the WebAssembly.instantiateStreaming()
function should be used).
Syntax
Promise<WebAssembly.Module> 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
bufferSource
is not a typed array, aTypeError
is thrown. - If compilation fails, the promise rejects with a
WebAssembly.CompileError
.
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 WindowOrWorkerGlobalScope.fetch()
call, and it will pass the response into the function when it fulfills.
var 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 features for web embedding The definition of 'compileStreaming()' in that specification. |
Browser compatibility
Desktop | Mobile | Server | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
compileStreaming | Chrome Full support 61 | Edge Full support 16 | Firefox Full support 58 | IE No support No | Opera Full support 47 | Safari No support No | WebView Android Full support 61 | Chrome Android Full support 61 | Firefox Android Full support 58 | Opera Android Full support 45 | Safari iOS No support No | Samsung Internet Android Full support 8.0 | nodejs No support No |
Legend
- Full support
- Full support
- No support
- No support