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 Geräten und in aktuellen Browserversionen. Auf älteren Geräten oder in älteren Browsern funktioniert sie möglicherweise nicht.
Die statische Methode Atomics.waitAsync() überprüft, ob eine gemeinsame Speicherstelle einen bestimmten Wert enthält. Sie gibt sofort ein Objekt mit der value-Eigenschaft zurück, das den String "not-equal" enthält, wenn die Speicherstelle nicht dem angegebenen Wert entspricht, oder "timed-out", wenn das Timeout auf null gesetzt wurde. Andernfalls gibt die Methode ein Objekt zurück, bei dem die value-Eigenschaft ein Promise ist, das entweder mit "ok" erfüllt wird, wenn Atomics.notify() aufgerufen wird, oder mit "timed-out", wenn das Timeout abläuft.
Atomics.waitAsync() und Atomics.notify() werden zusammen verwendet, um die Thread-Synchronisation basierend auf einem Wert im gemeinsamen Speicher zu ermöglichen. Ein Thread kann sofort fortfahren, wenn sich der Synchronisationswert geändert 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, müssen Sie trotzdem darauf achten, den gemeinsamen Speicher nicht zuzugreifen, bevor das Promise abgeschlossen ist.
Ein 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 erfüllt wird, entweder "ok" oder "timed-out". Das Promise wird niemals abgelehnt.
Wird ausgelöst, wenn typedArray kein Int32Array oder BigInt64Array ist, das einen SharedArrayBuffer betrachtet.
RangeErrorWird ausgelöst, wenn index außerhalb der Grenzen im typedArray liegt.
Beachten Sie, dass diese Beispiele nicht direkt von der Konsole oder einer beliebigen Webseite aus ausgeführt werden können, da SharedArrayBuffer nicht definiert ist, es sei denn, die Sicherheitsanforderungen werden erfüllt.
Gegeben ein gemeinsames Int32Array:
Ein lesender Thread schläft und wartet auf die Position 0, die erwartet wird, 0 zu sein. Das result.value wird ein Promise sein.
Im lesenden Thread oder in einem anderen Thread wird die Speicherstelle 0 aufgerufen und das Promise kann mit "ok" aufgelöst werden.
Wenn es nicht mit "ok" aufgelöst wird, war der Wert an der gemeinsamen Speicherstelle nicht der erwartete (der value wäre "not-equal" anstelle eines Promise) oder das Timeout wurde erreicht (das Promise wird mit "time-out" aufgelöst).
| ECMAScript® 2027 Language Specification # sec-atomics.waitasync |
JavaScript aktivieren, um diese Browser-Kompatibilitätstabelle anzuzeigen.
Der Bauplan für ein besseres Internet.
Besuche die gemeinnützige Muttergesellschaft der Mozilla Corporation, die Mozilla Foundation.
Teile dieses Inhalts sind ©1998–2026 von einzelnen mozilla.org-Mitwirkenden. Inhalte sind verfügbar unter einer Creative-Commons-Lizenz.