LockManager: query() method
Baseline 2022
Newly available
Since March 2022, this feature works across the latest devices and browser versions. This feature might not work in older devices or browsers.
Secure context: This feature is available only in secure contexts (HTTPS), in some or all supporting browsers.
Note: This feature is available in Web Workers.
The query()
method of the LockManager
interface returns a Promise
that resolves with an object containing information about held and pending locks.
Syntax
query()
Parameters
None.
Return value
A Promise
that resolves with an object containing a snapshot of the LockManager
state.
The object has the following properties:
held
-
An array of
LockInfo
objects for held locks. pending
-
An array of
LockInfo
objects for pending lock requests.
The LockInfo
object can have the following properties:
name
-
The name passed to
LockManager.request()
when the lock was requested. mode
-
The access mode passed to
LockManager.request()
when the lock was requested. The mode is either"exclusive"
or"shared"
. clientId
-
The unique identity of the context where
LockManager.request()
is called. This is the same value asClient.id
.
Exceptions
This method may return a promise rejected with a DOMException
of one of the following types:
InvalidStateError
DOMException
-
Thrown if the environments document is not fully active.
SecurityError
DOMException
-
Thrown if a lock manager cannot be obtained for the current environment.
Examples
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}`);
}
Specifications
Specification |
---|
Web Locks API # api-lock-manager-query |
Browser compatibility
BCD tables only load in the browser