WebAssembly
Baseline 廣泛可用 *
WebAssembly JavaScript 物件是所有 WebAssembly 相關功能的名稱空間。
與大多數其他全域性物件不同,WebAssembly 不是一個建構函式(它不是一個函式物件)。你可以將其與 Math 進行比較,Math 也是數學常量和函式的名稱空間物件,或者與 Intl 進行比較,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 程式碼,可以高效地 與 Workers 共享,並可以多次例項化。
WebAssembly.RuntimeError-
每當 WebAssembly 指定 陷阱 時丟擲的錯誤型別。
WebAssembly.Table-
一個類陣列結構,代表 WebAssembly 表,用於儲存 引用,例如函式引用。
WebAssembly.Tag-
表示 WebAssembly 異常型別的物件。
WebAssembly.Exception-
一個 WebAssembly 異常物件,可以在 WebAssembly/JavaScript 邊界內外丟擲、捕獲和重新丟擲。
靜態方法
WebAssembly.compile()-
從 WebAssembly 二進位制程式碼編譯
WebAssembly.Module,將例項化作為一個單獨的步驟。 WebAssembly.compileStreaming()-
直接從流式底層源編譯
WebAssembly.Module,將例項化作為一個單獨的步驟。 WebAssembly.instantiate()-
用於編譯和例項化 WebAssembly 程式碼的主要 API,返回一個
Module及其第一個Instance。 WebAssembly.instantiateStreaming()-
直接從流式底層源編譯和例項化 WebAssembly 模組,返回一個
Module及其第一個Instance。 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 |
瀏覽器相容性
載入中…