WebAssembly.compile()
**WebAssembly.compile()
** 静态方法将 WebAssembly 二进制代码编译成一个WebAssembly.Module
对象。如果必须在模块实例化之前编译模块,此函数很有用(否则,应使用WebAssembly.instantiate()
函数)。
**注意:** 具有严格内容安全策略 (CSP) 的网页可能会阻止 WebAssembly 编译和执行模块。有关允许 WebAssembly 编译和执行的更多信息,请参阅script-src CSP。
语法
js
WebAssembly.compile(bufferSource)
参数
bufferSource
-
包含要编译的 Wasm 模块二进制代码的类型化数组 或
ArrayBuffer
。
返回值
一个 Promise
,解析为表示已编译模块的WebAssembly.Module
对象。
异常
- 如果
bufferSource
不是类型化数组 或ArrayBuffer
,则 promise 会拒绝并抛出TypeError
。 - 如果编译失败,则 promise 会拒绝并抛出
WebAssembly.CompileError
。
示例
使用 compile
以下示例使用 compile()
函数编译加载的 simple.wasm 字节码,然后使用postMessage() 将其发送到工作线程。
js
const worker = new Worker("wasm_worker.js");
fetch("simple.wasm")
.then((response) => response.arrayBuffer())
.then((bytes) => WebAssembly.compile(bytes))
.then((mod) => worker.postMessage(mod));
**注意:** 在大多数情况下,您可能希望使用WebAssembly.compileStreaming()
,因为它比 compile()
更高效。
规范
规范 |
---|
WebAssembly JavaScript 接口 # dom-webassembly-compile |
浏览器兼容性
BCD 表格仅在启用 JavaScript 的浏览器中加载。