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() 정적 메서드는 공유 메모리 위치에서 비동기적으로 대기하고 Promise를 반환합니다.
Atomics.wait()와는 다르게, waitAsync는 논 블록킹이며 메인 스레드에서 사용할 수 있습니다.
참고 : 이 작업은 오직 공유된 Int32Array 혹은 BigInt64Array에서만 동작합니다.
구문
Atomics.waitAsync(typedArray, index, value) Atomics.waitAsync(typedArray, index, value, timeout) 매개변수
typedArray-
공유된
Int32Array혹은BigInt64Array. index-
typedArray에서의 대기하고 있는 인덱스. value-
테스트할 기대값.
timeoutOptional-
대기 시간(밀리초). 시간이 명시되지 않으면
Infinity입니다.
반환 값
다음 속성을 가진 Object.
예제
>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"으로 확인되지 않는다면 2가지 원인이 있습니다. 첫 번째 원인은 공유 메모리 위치의 값이 예상과 다른 경우인데 이 경우 value는 프로미스 대신 "not-equal"이 될 됩니다. 두 번째 원인은 시간이 만료(타임아웃)될 경우로 프로미스 결과는 문자열 "time-out"입니다.
명세서
| Specification |
|---|
| ECMAScript® 2026 Language Specification> # sec-atomics.waitasync> |