WebAssembly - JavaScript 编辑
The WebAssembly
JavaScript object acts as the namespace for all WebAssembly-related functionality.
Unlike most other global objects, WebAssembly
is not a constructor (it is not a function object). You can compare it to Math
, which is also a namespace object for mathematical constants and functions, or to Intl
which is the namespace object for internationalization constructors and other language-sensitive functions.
Description
The primary uses for the WebAssembly
object are:
- Loading WebAssembly code, using the
WebAssembly.instantiate()
function. - Creating new memory and table instances via the
WebAssembly.Memory()
/WebAssembly.Table()
constructors. - Providing facilities to handle errors that occur in WebAssembly via the
WebAssembly.CompileError()
/WebAssembly.LinkError()
/WebAssembly.RuntimeError()
constructors.
Constructor properties
WebAssembly.CompileError()
- Indicates an error during WebAssembly decoding or validation.
WebAssembly.Global()
- Represents a global variable instance, accessible from both JavaScript and importable/exportable across one or more
WebAssembly.Module
instances. This allows dynamic linking of multiple modules. WebAssembly.Instance()
- Is a stateful, executable instance of a WebAssembly.Module
WebAssembly.LinkError()
- Indicates an error during module instantiation (besides traps from the start function).
WebAssembly.Memory()
- An object whose
buffer
property is a resizable ArrayBuffer that holds the raw bytes of memory accessed by a WebAssemblyInstance
. WebAssembly.Module()
- Contains stateless WebAssembly code that has already been compiled by the browser and can be efficiently shared with Workers, and instantiated multiple times.
WebAssembly.RuntimeError()
- Error type that is thrown whenever WebAssembly specifies a trap.
WebAssembly.Table()
- An array-like structure representing a WebAssembly Table, which stores function references.
Static methods
WebAssembly.instantiate()
- The primary API for compiling and instantiating WebAssembly code, returning both a
Module
and its firstInstance
. WebAssembly.instantiateStreaming()
- Compiles and instantiates a WebAssembly module directly from a streamed underlying source, returning both a
Module
and its firstInstance
. WebAssembly.compile()
- Compiles a
WebAssembly.Module
from WebAssembly binary code, leaving instantiation as a separate step. WebAssembly.compileStreaming()
- compiles a
WebAssembly.Module
directly from a streamed underlying source, leaving instantiation as a separate step. WebAssembly.validate()
- Validates a given typed array of WebAssembly binary code, returning whether the bytes are valid WebAssembly code (
true
) or not (false
).
Examples
Stream a .wasm module then compile and instantiate it
The following example (see our instantiate-streaming.html demo on GitHub, and view it live also) directly streams a .wasm module from an underlying source then compiles and instantiates it, the promise fulfilling with a ResultObject
. Because the instantiateStreaming()
function accepts a promise for a Response
object, you can directly pass it a WindowOrWorkerGlobalScope.fetch()
call, and it will pass the response into the function when it fulfills.
var importObject = { imports: { imported_func: arg => console.log(arg) } };
WebAssembly.instantiateStreaming(fetch('simple.wasm'), importObject)
.then(obj => obj.instance.exports.exported_func());
The ResultObject
's instance member is then accessed, and the contained exported function invoked.
Specifications
Specification |
---|
WebAssembly JavaScript Interface The definition of 'WebAssembly' in that specification. |
Browser compatibility
BCD tables only load in the browser
See also
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论