WebAssembly.compileStreaming()

これは実験的な機能です。本番で使用する前にブラウザー実装状況をチェックしてください。

WebAssembly.compileStreaming() 関数はソースのストリームから直接 WebAssembly.Module にコンパイルします。この関数はモジュールをインスタンス化する前にコンパイルする必要がある場合に役立ちます (そうでない場合は、WebAssembly.instantiateStreaming() 関数の仕様が推奨されます)。

構文

Promise<WebAssembly.Module> WebAssembly.compileStreaming(source);

パラメータ

source
ストリーム、コンパイルする .wasm モジュールのソースコードを表す Response オブジェクトか、それを fulfill するプロミス。 

戻り値

解決時にコンパイルされたモジュールを表す WebAssembly.Module を渡す Promise 。

例外

次の例 (Github上のデモ compile-streaming.html と、動作例 を参照してください) では、ソースから直接 .wasm モジュールをストリームして、 WebAssembly.Module オブジェクトにコンパイルしています。compileStreaming()  関数は Response オブジェクトを渡すプロミスを受け取るので、直接 WindowOrWorkerGlobalScope.fetch() の呼び出し結果を渡すことができます。

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());

結果として受け取ったモジュールインスタンスはその後 WebAssembly.instantiate() を使用してインスタンス化され、エクスポートされた関数が実行されます。

仕様

Specification Status Comment
WebAssembly features for web embedding
compileStreaming() の定義
ドラフト 初回ドラフト定義

ブラウザ実装状況

Update compatibility data on GitHub
デスクトップモバイルサーバー
ChromeEdgeFirefoxInternet ExplorerOperaSafariAndroid webviewAndroid 版 ChromeAndroid 版 FirefoxAndroid 版 OperaiOSのSafariSamsung InternetNode.js
compileStreamingChrome 完全対応 61Edge 完全対応 16Firefox 完全対応 58IE 未対応 なしOpera 完全対応 47Safari 未対応 なしWebView Android 完全対応 61Chrome Android 完全対応 61Firefox Android 完全対応 58Opera Android 完全対応 45Safari iOS 未対応 なしSamsung Internet Android 完全対応 8.0nodejs 未対応 なし

凡例

完全対応  
完全対応
未対応  
未対応

関連情報