WebAssembly.instantiateStreaming()

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

WebAssembly.instantiateStreaming() 関数はソースのストリームから直接 WebAssembly モジュールをコンパイルしてインスタンス化します。

構文

Promise<ResultObject> WebAssembly.instantiateStreaming(source, importObject);

パラメータ

source
コンパイルしてインスタンス化する .wasm モジュールのソースを表す Response オブジェクトか、それをfulfillするプロミス。
importObject Optional
関数や WebAssembly.Module オブジェクトなどの新しく生成される Instance にインポートされる値を持つオブジェクト。モジュール内で宣言されたインポートそれぞれに対応するプロパティが存在する必要があります。そうでない場合、WebAssembly.LinkError がスローされます。

戻り値

解決時に次の2つのフィールドを持つ ResultObject を渡す Promise:

例外

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

var importObject = { imports: { imported_func: arg => console.log(arg) } };

WebAssembly.instantiateStreaming(fetch('simple.wasm'), importObject)
.then(obj => obj.instance.exports.exported_func());

最後に ResultObject が持つ instance メンバーにアクセスして、エクスポートされた関数を実行しています。

仕様

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

ブラウザ実装状況

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

凡例

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

関連情報