| [ Web Proxy ] |
| Viewing: https://developer.mozilla.org/fr/docs/Web/JavaScript/Reference/Global_Objects/Atomics/waitAsync | [Back] [Original] |
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 novembre 2025, cette fonctionnalit fonctionne sur les appareils et les versions de navigateur les plus rcents. Elle peut ne pas fonctionner sur les appareils ou navigateurs plus anciens.
La mthode statique Atomics.waitAsync() vrifie qu'un emplacement de mmoire partage contient une valeur donne, retournant immdiatement un objet dont la proprit value contient la chane de caractres "not-equal" si l'emplacement de mmoire ne correspond pas la valeur donne, ou "timed-out" si le dlai d'attente a t fix zro. Sinon, la mthode renvoie un objet dont la proprit value est une Promise qui s'excute avec "ok" lorsque Atomics.notify() est appele, ou "timed-out" si le dlai d'attente a expir.
Atomics.waitAsync() et Atomics.notify() sont utiliss ensemble pour permettre la synchronisation des processus base sur une valeur en mmoire partage. Un processus peut continuer immdiatement si la valeur de synchronisation a chang, ou attendre la notification d'un autre processus lorsqu'il atteint le point de synchronisation.
Cette mthode ne fonctionne qu'avec un Int32Array ou un BigInt64Array qui observe un SharedArrayBuffer. Elle est non bloquante et, contrairement Atomics.wait(), peut tre utilise dans le processus principal. Comme elle ne bloque pas le processus entier, il faut veiller ne pas accder la mmoire partage avant que la promesse ne soit rsolue.
Atomics.waitAsync(typedArray, index, value)
Atomics.waitAsync(typedArray, index, value, timeout)
typedArrayUn 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 ngatives deviennent 0.
Un objet (Object) avec les proprits suivantes :
asyncUn boolen indiquant si la proprit value est une Promise ou non.
valueSi async est false, ce sera une chane de caractres qui est soit "not-equal" soit "timed-out" (uniquement lorsque le paramtre timeout est 0). Si async est true, ce sera une Promise qui est rsolue avec une valeur de chane, soit "ok" soit "timed-out". La promesse n'est jamais rejete.
TypeErrorLeve si typedArray n'est pas un objet Int32Array ou un BigInt64Array qui observe un SharedArrayBuffer.
RangeErrorLeve si index est hors des limites de typedArray.
Notez que ces exemples ne peuvent pas tre excuts directement depuis la console ou une page web arbitraire, car SharedArrayBuffer n'est pas dfini moins que ses exigences de scurit ne soient respectes.
Atomics.waitAsync()Soit un tableau de mmoire partage Int32Array :
// Cre un SharedArrayBuffer avec une taille en octets
const sab = new SharedArrayBuffer(1024);
const int32 = new Int32Array(sab);
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.
const resultat = Atomics.waitAsync(int32, 0, 0, 1000);
// { async: true, value: Promise {<pending>} }
Dans le processus de lecture ou dans un autre processus, l'emplacement mmoire 0 est appel et la promesse peut tre rsolue avec "ok".
Atomics.notify(int32, 0);
// { async: true, value: Promise {<fulfilled>: 'ok'} }
Si elle ne se rsout pas en "ok", la valeur dans la mmoire partage n'tait pas celle attendue (la valeur serait "not-equal" au lieu d'une promesse) ou le dlai d'attente a t atteint (la promesse se rsoudra en "time-out").
| Spcification |
|---|
| ECMAScript 2027 LanguageSpecification # sec-atomics.waitasync |
AtomicsAtomics.wait()Atomics.notify()Cette page a t modifie le 27 mars 2026 par les contributeurices du MDN.
Certaines parties de ce contenu sont protges par le droit d'auteur 19982026 des contributeurs individuels de mozilla.org. Contenu disponible sous une licence Creative Commons.
| Web Proxy Viewer | New URL | Original Page |