WebAssembly.Module() コンストラクター

WebAssembly.Module() コンストラクターは、ステートレスな WebAssembly コードを含む新しい Module オブジェクトを生成します。これはブラウザーでコンパイルされ、Worker と効率的に共有することができ、複数回インスタンス化することができます。

WebAssembly.Module() コンストラクター関数は、与えられた WebAssembly バイナリーコードを同期的にコンパイルするために呼び出すことができます。しかし、Module を取得するには、 WebAssembly.compile() のような非同期コンパイル関数を使用するほうが主流です。

構文

Warning: 大きなモジュールのコンパイルにはコストがかかるため、開発者はどうしても同期コンパイルが必要な場合にのみ Module() コンストラクターを使用し、それ以外の場合には非同期の WebAssembly.compileStreaming() メソッドを使用してください。

new WebAssembly.Module(bufferSource)

引数

bufferSource

型付き配列または ArrayBuffer で、コンパイルしたい .wasm モジュールのバイナリーコードです。

WebAssembly モジュールの同期的なコンパイル

var importObject = {
  imports: {
    imported_func: function(arg) {
      console.log(arg);
    }
  }
};

function createWasmModule(bytes) {
  return new WebAssembly.Module(bytes);
}

fetch('simple.wasm').then(response =>
  response.arrayBuffer()
).then(bytes => {
  let mod = createWasmModule(bytes);
  WebAssembly.instantiate(mod, importObject)
  .then(result =>
     result.exports.exported_func()
  );
})

仕様書

Specification
WebAssembly JavaScript Interface
# dom-module-module

ブラウザーの互換性

BCD tables only load in the browser

関連情報