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
Responseobject 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
bufferSourceis not a typed array, aTypeErroris 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
