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 版 ChromeEdge MobileAndroid 版 FirefoxAndroid 版 OperaiOS 版 SafariSamsung InternetNode.js
基本対応Chrome 完全対応 61Edge 完全対応 16Firefox 完全対応 58IE 未対応 なしOpera 完全対応 47Safari 未対応 なしWebView Android 完全対応 61Chrome Android 完全対応 61Edge Mobile 未対応 なしFirefox Android 完全対応 58Opera Android ? Safari iOS 未対応 なしSamsung Internet Android 未対応 なしnodejs 未対応 なし

凡例

完全対応  
完全対応
未対応  
未対応
実装状況不明  
実装状況不明

関連情報

ドキュメントのタグと貢献者

このページの貢献者: ukyo
最終更新者: ukyo,