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

浏览器兼容性

Report problems with this compatibility data on GitHub
desktopmobile
Chrome
Edge
Firefox
Opera
Safari
Chrome Android
Firefox for Android
Opera Android
Safari on iOS
Samsung Internet
WebView Android
WebView on iOS
query

Legend

Tip: you can click/tap on a cell for more information.

Full support
Full support