LockManager:query() 方法

Baseline Widely available

This feature is well established and works across many devices and browser versions. It’s been available across browsers since March 2022.

安全上下文: 此项功能仅在一些支持的浏览器安全上下文(HTTPS)中可用。

备注: 此特性在 Web Worker 中可用。

LockManager 接口的 query() 方法返回一个 Promise,该对象兑现一个包含持有中的锁和请求中的锁的信息的对象。

语法

js
query()

参数

无。

返回值

一个 Promise,兑现一个包含 LockManager 状态快照的对象。该对象具有以下属性:

held

一个持有中的锁的 LockInfo 对象数组。

pending

一个请求中的锁的 LockInfo 对象数组。

LockInfo 对象可以具有以下属性:

name

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

mode

请求锁时传递给 LockManager.request() 的模式。该模式可以是 "exclusive""shared"

clientId

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

异常

此方法可能会返回一个被以下类型的 DOMException 之一拒绝的 promise:

InvalidStateError DOMException

如果当前环境的文档未完全激活,则抛出该异常。

SecurityError DOMException

如果无法获取当前环境的锁管理器,则抛出该异常。

示例

js
const state = await navigator.locks.query();
for (const lock of state.held) {
  console.log(`持有中的锁:名称 ${lock.name},模式 ${lock.mode}`);
}
for (const request of state.pending) {
  console.log(`请求中的锁:名称 ${request.name},模式 ${request.mode}`);
}

规范

Specification
Web Locks API
# api-lock-manager-query

浏览器兼容性

BCD tables only load in the browser