WebAssembly.Module.exports()
WebAssembly.Module.exports()
関数は、指定された Module
のエクスポート宣言の定義の配列を返します。
構文
WebAssembly.Module.exports(module)
引数
- module
-
WebAssembly.Module
オブジェクトです。
返値
指定したモジュールのエクスポートされた関数を表現するオブジェクトの配列です。
例外
モジュールが WebAssembly.Module
オブジェクトのインスタンスではない場合、TypeError
が発生します。
例
exports の使用
次の例 (Github のデモ index-compile.html と、動作例も参照) では、WebAssembly.compileStreaming()
関数を使用して読み込んだ simple.wasm のバイトコードをコンパイルして、ワーカーに postMessage() を使用して送信しています。
var worker = new Worker("wasm_worker.js");
WebAssembly.compileStreaming(fetch('simple.wasm'))
.then(mod =>
worker.postMessage(mod)
);
ワーカー (wasm_worker.js
を参照) 内で、モジュールで使用するためにインポートオブジェクトを定義して、そのあとにメインスレッドからモジュールを受け取るためのイベントハンドラをセットアップします。モジュールを受け取ったとき、WebAssembly.Instantiate()
メソッドを使用してインスタンスを生成し、その内部でエクスポートされた関数を実行します。そのあとに WebAssembly.Module.exports
を使用してモジュール上の利用可能なエクスポートの情報を返す方法を示します。
var importObject = {
imports: {
imported_func: function(arg) {
console.log(arg);
}
}
};
onmessage = function(e) {
console.log('module received from main thread');
var mod = e.data;
WebAssembly.instantiate(mod, importObject).then(function(instance) {
instance.exports.exported_func();
});
var exports = WebAssembly.Module.exports(mod);
console.log(exports[0]);
};
exports[0]
の出力はこのようになります。
{ name: "exported_func", kind: "function" }
仕様書
Specification |
---|
WebAssembly JavaScript Interface # dom-module-exports |
ブラウザーの互換性
BCD tables only load in the browser