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() の定義
ドラフト 初回ドラフト定義

ブラウザ実装状況

BCD tables only load in the browser

関連情報