Atomics.waitAsync()
Baseline
2025
Newly available
Depuis November 2025, cette fonctionnalité fonctionne sur les appareils et les versions de navigateur les plus récents. Elle peut ne pas fonctionner sur les appareils ou navigateurs plus anciens.
La méthode statique Atomics.waitAsync() permet d'attendre de façon asynchrone à un emplacement de mémoire partagée et renvoie une promesse.
À la différence de Atomics.wait(), waitAsync() n'est pas bloquante et peut être utilisée sur le fil d'exécution principal.
Note :
Cette opération ne fonctionne qu'avec un tableau typé partagé entier Int32Array ou BigInt64Array.
Syntaxe
Atomics.waitAsync(typedArray, index, value);
Atomics.waitAsync(typedArray, index, value, timeout);
Paramètres
typedArray-
Un tableau typé partagé de type
Int32ArrayouBigInt64Array. index-
La position au sein du tableau typé
typedArrayà laquelle on souhaite attendre. value-
La valeur attendue à tester.
timeoutFacultatif-
Le temps à attendre, exprimé en millisecondes. Par défaut, c'est la valeur
Infinityqui est utilisée.
Valeur de retour
Un objet Promise dont la valeur de résolution est l'un des objets suivants :
{ async: false, value: 'ok' }
{ async: false, value: 'not-equal' }
{ async: false, value: 'timed-out' }
{ async: true, value: promise }
Exemples
>Utiliser waitAsync()
Soit un tableau de mémoire partagée Int32Array.
const sab = new SharedArrayBuffer(1024);
const int32 = new Int32Array(sab);
Un thread de lecture est en sommeil et attend la valeur 0 à l'emplacement 0. La promesse resultat est renvoyée immédiatement.
const resultat = Atomics.waitAsync(int32, 0, 0, 1000);
// { async: true, value: promise }
Dans le thread de lecture ou dans un autre thread, on fait appel à l'emplacement mémoire 0 et la promesse peut être résolue avec value: "ok".
Atomics.notify(int32, 0);
// { async: false, value: "ok" }
Si la résolution ne founit pas value: "ok", cela signifie que :
- La valeur située à cet emplacement de la mémoire partagée n'était pas la valeur attendue (
"not-equal") - Ou que la durée d'attente a expiré (
"time-out").
Spécifications
| Specification |
|---|
| ECMAScript® 2026 Language Specification> # sec-atomics.waitasync> |