--- title: WebAssembly.instantiateStreaming() slug: Web/JavaScript/Reference/Global_Objects/WebAssembly/instantiateStreaming translation_of: Web/JavaScript/Reference/Global_Objects/WebAssembly/instantiateStreaming ---
WebAssembly.instantiateStreaming() 関数はソースのストリームから直接 WebAssembly モジュールをコンパイルしてインスタンス化します。
Promise<ResultObject> WebAssembly.instantiateStreaming(source, importObject);
Instance にインポートされる値を持つオブジェクト。モジュール内で宣言されたインポートそれぞれに対応するプロパティが存在する必要があります。そうでない場合、{{jsxref("WebAssembly.LinkError")}} がスローされます。解決時に次の2つのフィールドを持つ ResultObject を渡す Promise:
module: コンパイルされた {{jsxref("WebAssembly.Module")}} オブジェクト。この Module は再度インスタンス化することや、postMessage() 経由で共有したり、IndexedDBにキャッシュすることができます。instance: 全ての エクスポートされたWebAssembly関数 を含む {{jsxref("WebAssembly.Instance")}} オブジェクト。次の例 (Github上のデモ instantiate-streaming.html と、 動作例 を参照してください) では、ソースから .wasm モジュールを直接コンパイルしてインスタンス化しています。プロミスは ResultObject で fulfill されます。instantiateStreaming() 関数は {{domxref("Response")}} オブジェクトを渡すプロミスを受け取るので、直接 {{domxref("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 |
|---|---|---|
| {{SpecName('WebAssembly Embedding', '#webassemblyinstantiatestreaming', 'instantiateStreaming()')}} | {{Spec2('WebAssembly Embedding')}} | 初回ドラフト定義 |
{{Compat("javascript.builtins.WebAssembly.instantiateStreaming")}}