| [ Web Proxy ] |
| Viewing: https://developer.mozilla.org/de/docs/Web/JavaScript/Reference/Global_Objects/Atomics/waitAsync | [Back] [Original] |
Get to know MDN better
Dieser Inhalt wurde automatisch aus dem Englischen bersetzt, und kann Fehler enthalten. Erfahre mehr ber dieses Experiment.
Seit November 2025 funktioniert diese Funktion auf aktuellen Gerten und in aktuellen Browserversionen. Auf lteren Gerten oder in lteren Browsern funktioniert sie mglicherweise nicht.
Die statische Methode Atomics.waitAsync() berprft, ob eine gemeinsame Speicherstelle einen bestimmten Wert enthlt. Sie gibt sofort ein Objekt mit der value-Eigenschaft zurck, das den String "not-equal" enthlt, wenn die Speicherstelle nicht dem angegebenen Wert entspricht, oder "timed-out", wenn das Timeout auf null gesetzt wurde. Andernfalls gibt die Methode ein Objekt zurck, bei dem die value-Eigenschaft ein Promise ist, das entweder mit "ok" erfllt wird, wenn Atomics.notify() aufgerufen wird, oder mit "timed-out", wenn das Timeout abluft.
Atomics.waitAsync() und Atomics.notify() werden zusammen verwendet, um die Thread-Synchronisation basierend auf einem Wert im gemeinsamen Speicher zu ermglichen. Ein Thread kann sofort fortfahren, wenn sich der Synchronisationswert gendert hat, oder er kann auf eine Benachrichtigung von einem anderen Thread warten, wenn der Synchronisationspunkt erreicht wird.
Diese Methode funktioniert nur mit einem Int32Array oder BigInt64Array, das einen SharedArrayBuffer betrachtet. Sie ist nicht blockierend und kann, im Gegensatz zu Atomics.wait(), im Haupt-Thread verwendet werden. Da sie den gesamten Thread nicht blockiert, mssen Sie trotzdem darauf achten, den gemeinsamen Speicher nicht zuzugreifen, bevor das Promise abgeschlossen ist.
Atomics.waitAsync(typedArray, index, value)
Atomics.waitAsync(typedArray, index, value, timeout)
typedArrayEin Int32Array oder BigInt64Array, das einen SharedArrayBuffer betrachtet.
indexDie Position im typedArray, auf der gewartet werden soll.
valueDer erwartete Wert zum Testen.
timeout OptionalZeit, um in Millisekunden zu warten. NaN (und Werte, die in NaN umgewandelt werden, wie undefined) wird zu Infinity. Negative Werte werden zu 0.
Ein Object mit den folgenden Eigenschaften:
asyncEin Boolean, der anzeigt, ob die value-Eigenschaft ein Promise ist oder nicht.
valueWenn async false ist, wird es ein String sein, entweder "not-equal" oder "timed-out" (nur wenn der timeout Parameter 0 ist). Wenn async true ist, wird es ein Promise sein, das mit einem Stringwert erfllt wird, entweder "ok" oder "timed-out". Das Promise wird niemals abgelehnt.
TypeErrorWird ausgelst, wenn typedArray kein Int32Array oder BigInt64Array ist, das einen SharedArrayBuffer betrachtet.
RangeErrorWird ausgelst, wenn index auerhalb der Grenzen im typedArray liegt.
Beachten Sie, dass diese Beispiele nicht direkt von der Konsole oder einer beliebigen Webseite aus ausgefhrt werden knnen, da SharedArrayBuffer nicht definiert ist, es sei denn, die Sicherheitsanforderungen werden erfllt.
Gegeben ein gemeinsames Int32Array:
// Create a SharedArrayBuffer with a size in bytes
const sab = new SharedArrayBuffer(1024);
const int32 = new Int32Array(sab);
Ein lesender Thread schlft und wartet auf die Position 0, die erwartet wird, 0 zu sein.
Das result.value wird ein Promise sein.
const result = Atomics.waitAsync(int32, 0, 0, 1000);
// { async: true, value: Promise {<pending>} }
Im lesenden Thread oder in einem anderen Thread wird die Speicherstelle 0 aufgerufen und das Promise kann mit "ok" aufgelst werden.
Atomics.notify(int32, 0);
// { async: true, value: Promise {<fulfilled>: 'ok'} }
Wenn es nicht mit "ok" aufgelst wird, war der Wert an der gemeinsamen Speicherstelle nicht der erwartete (der value wre "not-equal" anstelle eines Promise) oder das Timeout wurde erreicht (das Promise wird mit "time-out" aufgelst).
| Spezifikation |
|---|
| ECMAScript 2027 LanguageSpecification # sec-atomics.waitasync |
Der Bauplan fr ein besseres Internet.
Teile dieses Inhalts sind 19982026 von einzelnen mozilla.org-Mitwirkenden. Inhalte sind verfgbar unter einer Creative-Commons-Lizenz.
| Web Proxy Viewer | New URL | Original Page |