Newly available 主要ブラウザの最新版で対応済み。古いブラウザが対象外なら使用可能。

概要

Atomics.waitAsync() は SharedArrayBuffer の指定位置が変更されるまで非同期的に待機します。メインスレッドでも使用可能で、Atomics.wait() のノンブロッキング版です。

対応ブラウザ

機能 デスクトップ モバイル
Chrome
Edge
Firefox
Safari
Chrome Android
Safari iOS
90
90
145
16.4
90
16.4
1+対応 (バージョン) 未対応 注釈あり サブ機能の解説は MDN Web Docs (CC BY-SA 2.5)
注釈 3件
制限事項
  • このブラウザでは部分的にしか実装されていません
削除済み
  • このバージョンで機能が削除されました (90)
実装メモ
  • Atomics.waitAsync()` メソッドがタイムアウトしない。バグ 40742782 を参照。
注釈 3件
制限事項
  • このブラウザでは部分的にしか実装されていません
削除済み
  • このバージョンで機能が削除されました (90)
実装メモ
  • Atomics.waitAsync()` メソッドがタイムアウトしない。バグ 40742782 を参照。
注釈 3件
制限事項
  • このブラウザでは部分的にしか実装されていません
削除済み
  • このバージョンで機能が削除されました (90)
実装メモ
  • Atomics.waitAsync()` メソッドがタイムアウトしない。バグ 40742782 を参照。

基本構文

JAVASCRIPT
const sab = new SharedArrayBuffer(4);
const int32 = new Int32Array(sab);

const { async: waitPromise } = Atomics.waitAsync(int32, 0, 0);
waitPromise.then(() => console.log('The value has been changed'));

ライブデモ

Check Atomics.waitAsync support

Inspect the availability of the async waiting API.

JavaScript
出力
「実行」ボタンを押してください

Start an async wait

Create the shared memory setup and inspect the returned wait token.

JavaScript
出力
「実行」ボタンを押してください

Resolve a waitAsync promise

Wake the waiting promise with Atomics.notify after updating the value.

JavaScript
出力
「実行」ボタンを押してください

実務での使いどころ

  • Atomics.waitAsync() の活用

    メインスレッドをブロックせずに共有メモリの変更を待機する非同期メソッド。

注意点

  • 古いブラウザ(IE等)では対応していない。対象ブラウザを確認すること。

アクセシビリティ

  • JavaScript による動的更新時は、aria-live リージョンで変更をスクリーンリーダーに通知する。

Powered by web-features