このページはコミュニティーの尽力で英語から翻訳されました。MDN Web Docsコミュニティーについてもっと知り、仲間になるにはこちらから。
WebAssembly.Instance() コンストラクター
Baseline Widely available
This feature is well established and works across many devices and browser versions. It’s been available across browsers since 2017年10月.
WebAssembly.Instance() コンストラクターは、新しいInstance オブジェクトを生成します。これはステートフルで実行可能なWebAssembly.Module のインスタンスです。
In this article
構文
警告:巨大なモジュールのインスタンス化は高コストになる可能性があるので、開発者が同期的なInstance() コンストラクターを使用するのは、絶対に必要な場合のみにするべきです。それ以外の場合はすべて、WebAssembly.instantiateStreaming() メソッドを使用してください。
new WebAssembly.Instance(module, importObject);引数
- module
インスタンス化する
WebAssembly.Moduleオブジェクト。- importObject省略可
新しく生成される
Instanceにインポートされる値を持つオブジェクトで、例えば関数やWebAssembly.Memoryオブジェクトなどです。モジュール内で宣言されたインポートそれぞれに対応するプロパティが存在する必要があります。そうでない場合、WebAssembly.LinkErrorが発生します。
例
>WebAssembly モジュールの同期的なインスタンス化
次のようにWebAssembly.Instance() コンストラクター関数を呼び出して、渡したWebAssembly.Module オブジェクトを同期的にインスタンス化することができます。
const importObject = { imports: { imported_func: function (arg) { console.log(arg); }, },};fetch("simple.wasm") .then((response) => response.arrayBuffer()) .then((bytes) => { let mod = new WebAssembly.Module(bytes); let instance = new WebAssembly.Instance(mod, importObject); instance.exports.exported_func(); });ただし、Instance を取得する方法としては、次のように、非同期のWebAssembly.instantiateStreaming() 関数を使用することをお勧めします。
const importObject = { imports: { imported_func: function (arg) { console.log(arg); }, },};WebAssembly.instantiateStreaming(fetch("simple.wasm"), importObject).then( (obj) => obj.instance.exports.exported_func(),);仕様書
| Specification |
|---|
| WebAssembly JavaScript Interface> # dom-instance-instance> |