LockManager:query() 方法

Baseline 已廣泛支援

此特性已經十分成熟,可在許多裝置和瀏覽器版本上使用。自 2022 年 3 月起,它已在各瀏覽器中可用。

安全上下文: 此功能僅在安全上下文(HTTPS)中可用,且支援此功能的瀏覽器數量有限。

注意:此功能在 Web Workers 中可用。

LockManager 介面的 query() 方法返回一個 Promise,該 Promise 解析為一個包含有關已持有和待定鎖資訊的物件。

語法

js
query()

引數

無。

返回值

一個 Promise,解析為一個包含 LockManager 狀態快照的物件。該物件具有以下屬性:

held

已持有鎖的 LockInfo 物件陣列。

pending

待定鎖請求的 LockInfo 物件陣列。

LockInfo 物件可以具有以下屬性:

name

請求鎖時傳遞給 LockManager.request() 的名稱。

模式

請求鎖時傳遞給 LockManager.request() 的訪問模式。模式為 "exclusive"(獨佔)或 "shared"(共享)。

clientId

呼叫 LockManager.request() 的上下文的唯一識別符號。這與 Client.id 的值相同。

異常

此方法可能會返回一個被拒絕的 Promise,並帶有以下型別的 DOMException

InvalidStateError DOMException

如果環境的文件尚未完全啟用,則丟擲此異常。

SecurityError DOMException

如果無法獲得當前環境的鎖管理器,則丟擲此異常。

示例

js
const state = await navigator.locks.query();
for (const lock of state.held) {
  console.log(`held lock: name ${lock.name}, mode ${lock.mode}`);
}
for (const request of state.pending) {
  console.log(`requested lock: name ${request.name}, mode ${request.mode}`);
}

規範

規範
Web Locks API
# api-lock-manager-query

瀏覽器相容性