LockManager: query() 方法

基线 2022

新功能

2022 年 3 月起,此功能适用于所有最新设备和浏览器版本。此功能可能不适用于旧设备或浏览器。

安全上下文: 此功能仅在 安全上下文 (HTTPS) 中可用,在 支持的浏览器 中可能部分或全部可用。

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

query() 方法是 LockManager 接口的方法,它返回一个 Promise,该 Promise 解析为一个包含有关已持有锁和待处理锁信息的对象。

语法

js
query()

参数

无。

返回值

一个 Promise,该 Promise 解析为一个包含 LockManager 状态快照的对象。该对象具有以下属性

held

已持有锁的 LockInfo 对象数组。

pending

待处理锁请求的 LockInfo 对象数组。

LockInfo 对象可以具有以下属性

name

请求锁时传递给 LockManager.request() 的名称。

mode

请求锁时传递给 LockManager.request() 的访问模式。模式为 "exclusive""shared"

clientId

调用 LockManager.request() 的上下文的唯一标识。这与 Client.id 的值相同。

异常

此方法可能返回一个 Promise,该 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

浏览器兼容性

BCD 表格仅在启用 JavaScript 的浏览器中加载。