Atomics.waitAsync()
Baseline
2025
Newly available
Since November 2025, this feature works across the latest devices and browser versions. This feature might not work in older devices or browsers.
Atomics.waitAsync() éçã¡ã½ããã¯ãå
±æã¡ã¢ãªã¼ä½ç½®ãæå®ãããå¤ãå«ããã¨ã確èªããã¡ã¢ãªã¼ä½ç½®ãæå®ãããå¤ã¨ä¸è´ããªãå ´åã¯æåå "not-equal" ãå«ã value ããããã£ãæã¤ãªãã¸ã§ã¯ããå³åº§ã«è¿ããã¿ã¤ã ã¢ã¦ãã 0 ã«è¨å®ããã¦ããå ´å㯠"timed-out" ãè¿ãã¾ãããã以å¤ã®å ´åããã®ã¡ã½ããã¯ãvalue ããããã£ã Promise ã§ãããªãã¸ã§ã¯ããè¿ãããã㯠Atomics.notify() ãå¼ã³åºãããã¨ãã« "ok"ãã¾ãã¯ã¿ã¤ã ã¢ã¦ããåããã¨ãã« "timed-out" ã§å±¥è¡ããã¾ãã
Atomics.waitAsync() ããã³ Atomics.notify() ãä¸ç·ã«ä½¿ç¨ããã¨ãå
±æã¡ã¢ãªã¼å
ã®å¤ã«åºã¥ãã¦ã¹ã¬ããã®åæãæå¹ã«ãããã¨ãã§ãã¾ããã¹ã¬ããã¯ãåæå¤ã夿´ãããå ´åãããã«å¦çãç¶è¡ãããã¨ããåæãã¤ã³ãã«å°éããã¨ãã«å¥ã®ã¹ã¬ããããã®éç¥ãå¾
ã¤ãã¨ãã§ãã¾ãã
ãã®ã¡ã½ããã¯ã SharedArrayBuffer ã®ãã¥ã¼ã§ãã Int32Array ã¾ã㯠BigInt64Array ã§ã®ã¿åä½ãã¾ããããã¯ãã³ããããã³ã°ã§ãããAtomics.wait() ã¨ã¯ç°ãªããã¡ã¤ã³ã¹ã¬ããã§ä½¿ç¨ãããã¨ãã§ãã¾ããã¹ã¬ããå
¨ä½ããããã¯ããªãããããããã¹ã決å®ããåã«å
±æã¡ã¢ãªã¼ã«ã¢ã¯ã»ã¹ããªãããã«æ³¨æããå¿
è¦ãããã¾ãã
æ§æ
Atomics.waitAsync(typedArray, index, value)
Atomics.waitAsync(typedArray, index, value, timeout)
弿°
typedArray-
SharedArrayBufferã®ãã¥ã¼ã§ããInt32Arrayã¾ãã¯BigInt64Arrayã index-
å¾ æ©ãã
typedArrayå ã®ä½ç½®ã value-
æ¤æ»ã§æå¾ ãããå¤ã
timeoutçç¥å¯-
å¾ æ©æéãããªç§åä½ã§æå®ãã¾ãã
NaNï¼ããã³NaNã«å¤æãããå¤ãä¾ãã°undefinedï¼ã¯Infinityã¨ãªãã¾ããè² ã®å¤ã¯0ã¨ãªãã¾ãã
è¿å¤
以ä¸ã®ããããã£ãæã¤ãªãã¸ã§ã¯ã (Object) ã§ãã
async-
valueããããã£ãPromiseã§ãããã©ããã示ãè«çå¤ã§ãã value-
asyncãfalseã®å ´åãæåå"not-equal"ã¾ãã¯"timed-out"ï¼timeout弿°ã0ã®å ´åã®ã¿ï¼ã«ãªãã¾ããasyncãtrueã®å ´åã"ok"ã¾ãã¯"timed-out"ã®æååå¤ã§å±¥è¡ããããããã¹ (Promise) ã«ãªãã¾ãããã®ãããã¹ã¯æ±ºãã¦æå¦ããã¾ããã
ä¾å¤
TypeError-
typedArrayããSharedArrayBufferã®ãã¥ã¼ã§ããInt32Arrayã¾ãã¯BigInt64Arrayã§ãªãå ´åã«çºçãã¾ãã RangeError-
indexãtypedArrayã®ç¯å²ãè¶ ãã¦ããå ´åã«çºçãã¾ãã
ä¾
>waitAsync() ã®ä½¿ç¨
å
±æããã Int32Array ããã£ãã¨ãã¾ãã
const sab = new SharedArrayBuffer(1024);
const int32 = new Int32Array(sab);
èªã¿åãã¹ã¬ããã¯ã0 ã§ããã¨æãããä½ç½® 0 ã§ä¼ç ãã¦å¾
æ©ãã¦ãã¾ãã
result.value ã¯ãããã¹ã«ãªãã¾ãã
const result = Atomics.waitAsync(int32, 0, 0, 1000);
// { async: true, value: Promise {<pending>} }
èªã¿è¾¼ã¿ã¹ã¬ããã¾ãã¯å¥ã®ã¹ã¬ããã§ãã¡ã¢ãªã¼ä½ç½® 0 ãå¼ã³åºããããããã¹ã¯ "ok" ã§è§£æ±ºã§ãã¾ãã
Atomics.notify(int32, 0);
// { async: true, value: Promise {<fulfilled>: 'ok'} }
"ok" ã«è§£æ±ºãããªãå ´åãå
±æã¡ã¢ãªã¼ã®å ´æã®å¤ãæå¾
ããå¤ã§ã¯ãªãã£ããï¼value ã¯ãããã¹ã§ã¯ãªã "not-equal" ã«ãªãã¾ãï¼ãã¿ã¤ã ã¢ã¦ãã«éããã¨ãããã¨ã§ãï¼ãããã¹ã¯ "time-out" ã«è§£æ±ºããã¾ãï¼ã
仿§æ¸
| Specification |
|---|
| ECMAScript® 2027 Language Specification> # sec-atomics.waitasync> |