WebAssembly - JavaScript 编辑
WebAssembly
JavaScript 对象是所有 WebAssembly 相关功能的命名空间。
和大多数全局对象不一样,WebAssembly
不是一个构造函数(它不是一个函数对象)。它类似于 Math
对象或者 Intl
对象,Math 对象也是一个命名空间对象,用于保存数学常量和函数;Intl则是用于国际化和其他语言相关函数的命名空间对象。
描述
WebAssembly
对象主要用于:
- 使用
WebAssembly.instantiate()
函数加载 WebAssembly 代码。 - 通过
WebAssembly.Memory()
/WebAssembly.Table()
构造函数创建新的内存和表实例。 - 由
WebAssembly.CompileError()
/WebAssembly.LinkError()
/WebAssembly.RuntimeError()
构造函数来提供 WebAssembly 中的错误信息。
方法
WebAssembly.instantiate()
- 用于编译和实例化 WebAssembly 代码的主 API,返回一个
Module
和它的第一个Instance
实例。 WebAssembly.instantiateStreaming()
- 直接从流式底层源编译和实例化WebAssembly模块,同时返回
Module
及其第一个Instance
实例。 WebAssembly.compile()
- 把 WebAssembly 二进制代码编译为一个
WebAssembly.Module
,不进行实例化。 WebAssembly.compileStreaming()
- 直接从流式底层源代码编译
WebAssembly.Module
,将实例化作为一个单独的步骤。 WebAssembly.validate()
- 校验 WebAssembly 二进制代码的类型数组是否合法,合法则返回 true ,否则返回 false 。
构造器
WebAssembly.Global()
- 创建一个新的WebAssembly
Global
全局对象. WebAssembly.Module()
- 创建一个新的WebAssembly
Module
模块对象。 WebAssembly.Instance()
- 创建一个新的WebAssembly
Instance
实例对象。 WebAssembly.Memory()
- 创建一个新的WebAssembly
Memory
内存对象。 WebAssembly.Table()
- 创建一个新的WebAssembly
Table
表格对象。 WebAssembly.CompileError()
- 创建一个新的WebAssembly
CompileError
编译错误对象。 WebAssembly.LinkError()
- 创建一个新的WebAssembly
LinkError
链接错误对象。 WebAssembly.RuntimeError()
- 创建一个新的WebAssembly
RuntimeError
运行时错误对象。
示例
下面的示例(请参见GitHub上的Instantiate-streaming.html演示,并查看在线演示)直接从流式底层源传输.wasm模块,然后对其进行编译和实例化,并通过ResultObject
实现promise。 由于instantiateStreaming()
函数接受对 Response
对象的promise,因此您可以直接向其传递WindowOrWorkerGlobalScope.fetch()
调用,然后它将把返回的response传递给随后的函数。
var importObject = { imports: { imported_func: arg => console.log(arg) } };
WebAssembly.instantiateStreaming(fetch('simple.wasm'), importObject)
.then(obj => obj.instance.exports.exported_func())
返回的ResultObject
实例的成员可以被随后访问到,可以调用实例中被导出的方法。
规范
Specification | Status | Comment |
---|---|---|
WebAssembly JavaScript Interface WebAssembly | Working Draft | 初始草案定义 |
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.如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论