å®å ¨ãªã³ã³ããã¹ãç¨: ãã®æ©è½ã¯ä¸é¨ã¾ãã¯ãã¹ã¦ã®å¯¾å¿ãã¦ãããã©ã¦ã¶ã¼ã«ããã¦ãå®å ¨ãªã³ã³ããã¹ã (HTTPS) ã§ã®ã¿å©ç¨ã§ãã¾ãã
Web Locks API ãç¨ããã¨ã1 åã®ã¿ãã¾ãã¯ã¯ã¼ã«ã¼ã§å®è¡ããã¦ããã¹ã¯ãªãããéåæã§ããã¯ãç²å¾ããå¦çã®å®è¡ä¸ä¿æãããã®å¾è§£æ¾ãããã¨ãã§ãã¾ããããã¯ãä¿æããã¦ããéã¯ãåããªãªã¸ã³ã§å®è¡ããã¦ããä»ã®ã¹ã¯ãªããã¯åãããã¯ãç²å¾ã§ãããè¤æ°ã®ã¿ããã¯ã¼ã«ã¼ã§å®è¡ããã¦ããã¦ã§ãã¢ããªã±ã¼ã·ã§ã³ãå¦çããªã½ã¼ã¹ã®ä½¿ç¨ãå調ãã¦è¡ããã¨ãã§ãã¾ãã
Web Locks ã®æ¦å¿µã¨ä½¿ç¨æ³ããã¯ã¯å
±æãããããªã½ã¼ã¹ãè¡¨ãæ½è±¡æ¦å¿µã§ãããã¦ã§ãã¢ããªã±ã¼ã·ã§ã³ãè¨å®ããååã«ãã£ã¦èå¥ããã¾ãããã¨ãã°ãè¤æ°ã®ã¿ãã§å®è¡ãããã¦ã§ãã¢ããªã±ã¼ã·ã§ã³ã 1 åã®ã¿ãã§ã®ã¿ãããã¯ã¼ã¯ã¨ Indexed DB ã®éã®ãã¼ã¿åæãè¡ããã¨ãä¿è¨¼ãããå ´åãããããã®ã¿ãã "my_net_db_sync"
ããã¯ã®ç²å¾ã試ã¿ããã¨ãã§ãã¾ããã1 åã®ã¿ãã®ã¿ãç²å¾ã«æåããã§ãããã(ãªã¼ãã¼é¸åºãã¿ã¼ã³)
ãã® API ã¯ã以ä¸ã®æµãã§ä½¿ç¨ãã¾ãã
navigator.locks.request("my_resource", async (lock) => {
// ããã¯ãç²å¾ããã
await do_something();
await do_something_else();
// ããã§ããã¯ãè§£æ¾ããã
});
ããã¯ã確ä¿ãã¦ããéã¯ãåãå®è¡ã³ã³ããã¹ãããå¥ã®ã¿ããã¯ã¼ã«ã¼ããã®åãããã¯ã®è¦æ±ã¯ãã¥ã¼ã«æå ¥ããã¾ããããã¯ãè§£æ¾ãããã¨ãã®ã¿ãæåã«ãã¥ã¼ã«æå ¥ãããè¦æ±ãããã¯ãç²å¾ãã¾ãã
ãã® API ã¯ã以ä¸ãå«ãå¿ è¦ã«å¿ãã¦ä½¿ç¨ã§ãããªãã·ã§ã³ã®æ©è½ãæä¾ãã¾ãã
ããã¯ã®ã¹ã³ã¼ãã¯ãªãªã¸ã³å
ã§ããhttps://example.com
ç±æ¥ã®ã¿ãã§ç²å¾ãããããã¯ã¯ãå¥ã®ãªãªã¸ã³ã§ãã https://example.org:8080
ç±æ¥ã®ã¿ãã§ç²å¾ãããããã¯ã«ã¯å½±é¿ãã¾ããã
主ãªã¨ã³ããªã¼ãã¤ã³ãã¯ãããã¯ãè¦æ±ãã navigator.locks.request()
ã§ãããã®ã¡ã½ããã¯ãããã¯ã®ååãçç¥å¯è½ãªãªãã·ã§ã³ä¸å¼ãã³ã¼ã«ããã¯ãã¨ãã¾ããã³ã¼ã«ããã¯ã¯ãããã¯ãç²å¾ãããã¨å¼ã³åºããã¾ããããã¯ã¯ã³ã¼ã«ããã¯ãã帰ãã¨èªåçã«è§£æ¾ãããã®ã§ãé常ã³ã¼ã«ããã¯ã«ã¯ éåæé¢æ° ãç¨ãã¾ãããã®å ´åãããã¯ã¯éåæé¢æ°ã®å®è¡ãå®å
¨ã«å®äºããã¾ã§è§£æ¾ããã¾ããã
request()
颿°èªä½ããããã¯ãè§£æ¾ãããã¨è§£æ±ºãã Promise
ãè¿ãã¾ããéåæé¢æ°å
ã§ã¯ãå¼ã³åºãã« await
ãç¨ãããã¨ã§éåæã®ã³ã¼ãã®æµããç´ç·çã«ã§ãã¾ãã
ä¾:
await do_something_without_lock();
// ããã¯ãè¦æ±ãã
await navigator.locks.request("my_resource", async (lock) => {
// ããã¯ãç²å¾ãã
await do_something_with_lock();
await do_something_else_with_lock();
// ããã§ããã¯ãè§£æ¾ããã
});
// ããã¯ãè§£æ¾ããã
await do_something_else_without_lock();
ãªãã·ã§ã³
ããã¯ã®è¦æ±æãããã¤ãã®ãªãã·ã§ã³ã渡ããã¨ãã§ãã¾ãã
mode
: ããã©ã«ãã®ã¢ã¼ã㯠"exclusive"
ã§ããã"shared"
ãæå®ãããã¨ãã§ãã¾ãã"exclusive"
ã®ããã¯ãä¿æã§ããã®ã¯ 1 åã ãã§ããã"shared"
ã§è¦æ±ãããå ´åã¯åæã«è¤æ°ã®ããã¯ãç²å¾ã§ãã¾ããããã«ãããreaders-writer pattern ãå®è£
ã§ãã¾ããsignal
: AbortSignal
ãæ¸¡ããã¨ãã§ããããã¯ã®è¦æ±ã䏿¢ã§ããããã«ãã¾ããããã«ãããè¦æ±ã®ã¿ã¤ã ã¢ã¦ããå®è£
ã§ãã¾ããifAvailable
: æå®ãããå ´åã¯ãããã¯ãå¾
ããã«ããç²å¾ã§ããªãå ´åã¯ããã¯ã®è¦æ±ã失æãã¾ããã³ã¼ã«ããã¯ã¯ null
ã¨ã¨ãã«å¼ã³åºããã¾ããnavigator.locks.query()
ã¡ã½ããã«ãããã¹ã¯ãªãããããªãªã¸ã³ã®ããã¯ããã¼ã¸ã£ã¼ã®ç¶æ
ã観å¯ã§ãã¾ããããã¯ãããã¯ãç²å¾ã§ããªãçç±ãç¹å®ãããªã©ã®ãããã°ã«å½¹ç«ã¤å¯è½æ§ãããã¾ããçµæã¯ããã¯ããã¼ã¸ã£ã¼ã®ç¶æ
ã®ã¹ãããã·ã§ããã§ãããã¹ãããã·ã§ãããåãããæç¹ã§ã®ä¿æããã¦ããããã¯ãè¦æ±ããã¦ããããã¯ãããããã«ã¤ãã¦ã®è¿½å æ
å ± (ã¢ã¼ããªã©) ãç¹å®ã§ãã¾ãã
ããã¯ãä»»æã®æéä¿æãããªã©ã®ããè¤éãªå ´åã«ã¯ãã³ã¼ã«ããã¯ã¯ã¹ã¯ãªããã«ãã£ã¦æç¤ºçã«è§£æ±ºããã Promise
ãè¿ããã¨ãã§ãã¾ãã
// Promise ã®å¶å¾¡é¢æ°ãåãè¾¼ã
let resolve, reject;
const p = new Promise((res, rej) => {
resolve = res;
reject = rej;
});
// ããã¯ãè¦æ±ãã
navigator.locks.request(
"my_resource",
// ããã¯ãç²å¾ãã
(lock) => p, // ããã§ãããã¯ã¯ resolve() ã¾ã㯠reject() ãå¼ã¶ã¾ã§ç¢ºä¿ããã
);
ãããããã¯
ãããããã¯ã¯ãããããã®é¨åãæºããããªãè¦æ±ãå¾ æ©ãã¦ãããããå¦çãé²ã¾ãªããªãã¨çºçãã¾ããããã¯ãè¤æ°ã®ããã¯ããã©ãã©ã®é çªã§è¦æ±ããããªã©ããã® API ã®è¤éãªä½¿ç¨ä¾ã§èµ·ããå¯è½æ§ãããã¾ããã¿ã 1 ããã㯠A ãä¿æããã¿ã 2 ããã㯠B ãä¿æããããã«ã¿ã 1 ããã㯠B ããã¿ã 2 ããã㯠A ãç²å¾ãããã¨ããã¨ãã©ã¡ãã®ãªã¯ã¨ã¹ããæºãããã¨ã¯ã§ãã¾ãããã¦ã§ãã¢ããªã±ã¼ã·ã§ã³ã¯ãè¤æ°ã®æ¦ç¥ã§ãããåé¿ã§ãã¾ãããã¨ãã°ãããã¯ã®è¦æ±ãå ¥ãåã«ããªããã¨ãä¿è¨¼ãããå¸¸ã«æ±ºã¾ã£ãé çªã§è¦æ±ãè¡ããã¿ã¤ã ã¢ã¦ããè¨ãããªã©ã§ãããªãããã®ãããªãããããã¯ã¯ãããã®ããã¯èªèº«ã¨ãããã«ä¾åããã³ã¼ãã®ã¿ã«å½±é¿ãä¸ãã¾ãããã©ã¦ã¶ã¼ã»ä»ã®ã¿ãã»ãã¼ã¸å ã®ä»ã®ã¹ã¯ãªããã«ã¯å½±é¿ãã¾ããã
ã¤ã³ã¿ã¼ãã§ã¤ã¹Lock
LockManager.request()
ã®ã³ã¼ã«ããã¯ã«æ¸¡ãããè¦æ±ããããã¯ã®ååã¨ã¢ã¼ããæä¾ãã¾ãã
LockManager
æ°ãã Lock
ãªãã¸ã§ã¯ãã®è¦æ±ããæ¢åã® Lock ãªãã¸ã§ã¯ãã®åå¾ãè¡ãã¡ã½ãããæä¾ãã¾ããLockManager ã®ã¤ã³ã¹ã¿ã³ã¹ãå¾ãã«ã¯ãnavigator.locks
ãåç
§ãã¾ãã
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4