WebAssembly.instantiateStreaming()
関数はソースのストリームから直接 WebAssembly モジュールをコンパイルしてインスタンス化します。
構文
Promise<ResultObject> WebAssembly.instantiateStreaming(source, importObject);
パラメータ
- source
- コンパイルしてインスタンス化する .wasm モジュールのソースを表す
Response
オブジェクトか、それをfulfillするプロミス。 - importObject Optional
- 関数や
WebAssembly.Module
オブジェクトなどの新しく生成されるInstance
にインポートされる値を持つオブジェクト。モジュール内で宣言されたインポートそれぞれに対応するプロパティが存在する必要があります。そうでない場合、WebAssembly.LinkError
がスローされます。
戻り値
解決時に次の2つのフィールドを持つ ResultObject
を渡す Promise
:
module
: コンパイルされたWebAssembly.Module
オブジェクト。このModule
は再度インスタンス化することや、postMessage() 経由で共有したり、IndexedDBにキャッシュすることができます。instance
: 全ての エクスポートされたWebAssembly関数 を含むWebAssembly.Instance
オブジェクト。
例外
- いずれかのパラメータが正しい型、または構造でない場合、
TypeError
がスローされます。 - 失敗した場合、プロミスは失敗の原因に応じて
WebAssembly.CompileError
、WebAssembly.LinkError
またはWebAssembly.RuntimeError
を持って棄却されます。
例
次の例 (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
The compatibility table on this page is generated from structured data. If you'd like to contribute to the data, please check out https://github.com/mdn/browser-compat-data and send us a pull request.
関連情報
- WebAssembly overview page
- WebAssemblyのコンセプト
- WebAssembly JavaScript API を使用する