WebAssembly
WebAssembly JavaScript 物件充當所有與 WebAssembly 相關的功能的名稱空間。
與大多數其他全域性物件不同,WebAssembly 不是建構函式(它不是函式物件)。您可以將其與 Math 進行比較,後者也是數學常數和函式的名稱空間物件,或者與 Intl 進行比較,後者是國際化建構函式和其他語言敏感函式的名稱空間物件。
描述
WebAssembly 物件的主要用途是
- 使用
WebAssembly.instantiate()函式載入 WebAssembly 程式碼。 - 透過
WebAssembly.Memory()/WebAssembly.Table()建構函式建立新的記憶體和表例項。 - 提供透過
WebAssembly.CompileError()/WebAssembly.LinkError()/WebAssembly.RuntimeError()建構函式處理 WebAssembly 中發生的錯誤的工具。
介面
WebAssembly.CompileError-
指示 WebAssembly 解碼或驗證期間發生的錯誤。
WebAssembly.Global-
表示全域性變數例項,可從 JavaScript 訪問,並且可在多個
WebAssembly.Module例項之間匯入/匯出。這允許多個模組的動態連結。 WebAssembly.Instance-
是
WebAssembly.Module的有狀態、可執行例項 WebAssembly.LinkError-
指示模組例項化期間發生的錯誤(除了來自啟動函式的 陷阱)。
WebAssembly.Memory-
一個物件,其
buffer屬性是一個可調整大小的ArrayBuffer,它儲存由 WebAssemblyInstance訪問的原始記憶體位元組。 WebAssembly.Module-
包含已由瀏覽器編譯的無狀態 WebAssembly 程式碼,可以有效地 與 Worker 共享,並且可以多次例項化。
WebAssembly.RuntimeError-
每當 WebAssembly 指定 陷阱 時丟擲的錯誤型別。
WebAssembly.Table-
表示 WebAssembly 表的類似陣列的結構,該結構儲存 引用,例如函式引用。
WebAssembly.Tag-
表示 WebAssembly 異常型別的物件。
WebAssembly.Exception-
可以丟擲、捕獲和重新丟擲的 WebAssembly 異常物件,無論是在 WebAssembly/JavaScript 邊界內還是跨邊界。
靜態方法
WebAssembly.instantiate()-
編譯和例項化 WebAssembly 程式碼的主要 API,返回
Module及其第一個Instance。 WebAssembly.instantiateStreaming()-
直接從流式底層源編譯和例項化 WebAssembly 模組,返回
Module及其第一個Instance。 WebAssembly.compile()-
從 WebAssembly 二進位制程式碼編譯
WebAssembly.Module,將例項化作為單獨的步驟。 WebAssembly.compileStreaming()-
直接從流式底層源編譯
WebAssembly.Module,將例項化作為單獨的步驟。 WebAssembly.validate()-
驗證給定的 WebAssembly 二進位制程式碼的型別化陣列,返回位元組是否為有效的 WebAssembly 程式碼 (
true) 或不是 (false)。
示例
流式傳輸 Wasm 模組,然後編譯並例項化它
以下示例(請參閱我們在 GitHub 上的 instantiate-streaming.html 演示,以及 線上檢視)直接從底層源流式傳輸 Wasm 模組,然後編譯並例項化它,promise 以 ResultObject 形式完成。由於 instantiateStreaming() 函式接受 Response 物件的 promise,因此您可以直接將 fetch() 呼叫傳遞給它,它將在 promise 完成時將響應傳遞到函式中。
const importObject = {
my_namespace: { imported_func: (arg) => console.log(arg) },
};
WebAssembly.instantiateStreaming(fetch("simple.wasm"), importObject).then(
(obj) => obj.instance.exports.exported_func(),
);
然後訪問 ResultObject 的 .instance 屬性,並呼叫包含的匯出函式。
規範
| 規範 |
|---|
| WebAssembly JavaScript 介面 # webassembly-namespace |
瀏覽器相容性
BCD 表僅在啟用 JavaScript 的瀏覽器中載入。