Atomics.waitAsync()

Limited availability

This feature is not Baseline because it does not work in some of the most widely-used browsers.

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

js
Atomics.waitAsync(typedArray, index, value);
Atomics.waitAsync(typedArray, index, value, timeout);

Paramètres

typedArray

Un tableau typé partagé de type Int32Array ou BigInt64Array.

index

La position au sein du tableau typé typedArray à laquelle on souhaite attendre.

value

La valeur attendue à tester.

timeout Facultatif

Le temps à attendre, exprimé en millisecondes. Par défaut, c'est la valeur Infinity qui est utilisée.

Valeur de retour

Un objet Promise dont la valeur de résolution est l'un des objets suivants :

js
{ 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.

js
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.

js
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".

js
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® 2025 Language Specification
# sec-atomics.waitasync

Compatibilité des navigateurs

Report problems with this compatibility data on GitHub
desktopmobileserver
Chrome
Edge
Firefox
Opera
Safari
Chrome Android
Firefox for Android
Opera Android
Safari on iOS
Samsung Internet
WebView Android
WebView on iOS
Deno
Node.js
waitAsync

Legend

Tip: you can click/tap on a cell for more information.

Full support
Full support
No support
No support

Voir aussi