Get to know MDN better
Cette page a été traduite à partir de l'anglais par la communauté. Vous pouvez contribuer en rejoignant la communauté francophone sur MDN Web Docs.
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() vérifie qu'un emplacement de mémoire partagée contient une valeur donnée, retournant immédiatement un objet dont la propriété value contient la chaîne de caractères "not-equal" si l'emplacement de mémoire ne correspond pas à la valeur donnée, ou "timed-out" si le délai d'attente a été fixé à zéro. Sinon, la méthode renvoie un objet dont la propriété value est une Promise qui s'exécute avec "ok" lorsque Atomics.notify() est appelée, ou "timed-out" si le délai d'attente a expiré.
Atomics.waitAsync() et Atomics.notify() sont utilisés ensemble pour permettre la synchronisation des processus basée sur une valeur en mémoire partagée. Un processus peut continuer immédiatement si la valeur de synchronisation a changé, ou attendre la notification d'un autre processus lorsqu'il atteint le point de synchronisation.
Cette méthode ne fonctionne qu'avec un Int32Array ou un BigInt64Array qui observe un SharedArrayBuffer. Elle est non bloquante et, contrairement à Atomics.wait(), peut être utilisée dans le processus principal. Comme elle ne bloque pas le processus entier, il faut veiller à ne pas accéder à la mémoire partagée avant que la promesse ne soit résolue.
Un objet Int32Array ou BigInt64Array qui observe un SharedArrayBuffer.
indexLa position au sein du tableau typé typedArray à laquelle on souhaite attendre.
valueLa valeur attendue à tester.
timeout FacultatifLe temps d'attente en millisecondes. NaN (et les valeurs qui sont converties en NaN, comme undefined) devient Infinity. Les valeurs négatives deviennent 0.
Un objet (Object) avec les propriétés suivantes :
asyncUn booléen indiquant si la propriété value est une Promise ou non.
valueSi async est false, ce sera une chaîne de caractères qui est soit "not-equal" soit "timed-out" (uniquement lorsque le paramètre timeout est 0). Si async est true, ce sera une Promise qui est résolue avec une valeur de chaîne, soit "ok" soit "timed-out". La promesse n'est jamais rejetée.
Levée si typedArray n'est pas un objet Int32Array ou un BigInt64Array qui observe un SharedArrayBuffer.
RangeErrorLevée si index est hors des limites de typedArray.
Notez que ces exemples ne peuvent pas être exécutés directement depuis la console ou une page web arbitraire, car SharedArrayBuffer n'est pas défini à moins que ses exigences de sécurité ne soient respectées.
Soit un tableau de mémoire partagée Int32Array :
Un processus de lecture est en train de dormir et d'attendre sur l'emplacement 0 qui devrait être 0. Le result.value sera une promesse.
Dans le processus de lecture ou dans un autre processus, l'emplacement mémoire 0 est appelé et la promesse peut être résolue avec "ok".
Si elle ne se résout pas en "ok", la valeur dans la mémoire partagée n'était pas celle attendue (la valeur serait "not-equal" au lieu d'une promesse) ou le délai d'attente a été atteint (la promesse se résoudra en "time-out").
| ECMAScript® 2027 Language Specification # sec-atomics.waitasync |
Activez JavaScript pour afficher ce tableau de compatibilité des navigateurs.
Cette page a été modifiée le 27 mars 2026 par les contributeur·ice·s du MDN.
Votre modèle pour un internet meilleur.
Visitez la société mère à but non lucratif de Mozilla Corporation, la Fondation Mozilla.
Certaines parties de ce contenu sont protégées par le droit d'auteur ©1998—2026 des contributeurs individuels de mozilla.org. Contenu disponible sous une licence Creative Commons.