LockManagerï¼query() æ¹æ³
åºçº¿
广æ³å¯ç¨
èª 2022å¹´3æ èµ·ï¼æ¤ç¹æ§å·²å¨ä¸»æµæµè§å¨ä¸å¾å°æ¯æï¼å¯å¨å¤§å¤æ°è®¾å¤åæµè§å¨çæ¬ä¸æ£å¸¸ä½¿ç¨ã
å®å ¨ä¸ä¸æ: æ¤ç¹æ§ä» å¨ä¸äºæ¯æçæµè§å¨çå®å ¨ä¸ä¸æï¼HTTPSï¼ä¸å¯ç¨ã
夿³¨ï¼ æ¤ç¹æ§å¨ Web Worker ä¸å¯ç¨ã
LockManager æ¥å£ç query() æ¹æ³è¿åä¸ä¸ª Promiseï¼è¯¥å¯¹è±¡å
ç°ä¸ä¸ªå
嫿æä¸çéå请æ±ä¸çéçä¿¡æ¯ç对象ã
è¯æ³
query()
åæ°
æ ã
è¿åå¼
ä¸ä¸ª Promiseï¼å
ç°ä¸ä¸ªå
å« LockManager ç¶æå¿«ç
§ç对象ã该对象å
·æä»¥ä¸å±æ§ï¼
held-
ä¸ä¸ªææä¸çéç
LockInfo对象æ°ç»ã pending-
ä¸ä¸ªè¯·æ±ä¸çéç
LockInfo对象æ°ç»ã
LockInfo 对象å¯ä»¥å
·æä»¥ä¸å±æ§ï¼
name-
请æ±éæ¶ä¼ éç»
LockManager.request()çåç§°ã mode-
请æ±éæ¶ä¼ éç»
LockManager.request()çæ¨¡å¼ã该模å¼å¯ä»¥æ¯"exclusive"æ"shared"ã clientId-
è°ç¨
LockManager.request()çä¸ä¸æçå¯ä¸æ è¯ã该å¼ä¸Client.idç¸åã
å¼å¸¸
æ¤æ¹æ³å¯è½ä¼è¿åä¸ä¸ªè¢«ä»¥ä¸ç±»åç DOMException ä¹ä¸æç»ç promiseï¼
InvalidStateErrorDOMException-
妿å½åç¯å¢çææ¡£æªå®å ¨æ¿æ´»ï¼åæåºè¯¥å¼å¸¸ã
SecurityErrorDOMException-
å¦ææ æ³è·åå½åç¯å¢çé管çå¨ï¼åæåºè¯¥å¼å¸¸ã
示ä¾
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}`);
}
è§è
| è§è |
|---|
| Web Locks API > # api-lock-manager-query > |