Movatterモバイル変換


[0]ホーム

URL:


  1. Web
  2. JavaScript
  3. JavaScript-Referenz
  4. Eingebaute Standardobjekte
  5. Atomics
  6. waitAsync()

Dieser Inhalt wurde automatisch aus dem Englischen übersetzt, und kann Fehler enthalten.Erfahre mehr über dieses Experiment.

View in EnglishAlways switch to English

Atomics.waitAsync()

Baseline 2025
Newly available

Since ⁨November 2025⁩, this feature works across the latest devices and browser versions. This feature might not work in older devices or browsers.

Die statische MethodeAtomics.waitAsync() überprüft, ob sich an einem freigegebenen Speicherort ein bestimmter Wert befindet. Sie gibt sofort ein Objekt mit der Eigenschaftvalue zurück, das den String"not-equal" enthält, wenn der Speicherort nicht mit dem angegebenen Wert übereinstimmt, oder"timed-out", wenn das Timeout auf null gesetzt wurde. Andernfalls gibt die Methode ein Objekt zurück, bei dem die Eigenschaftvalue einPromise ist, das mit entweder"ok" erfüllt wird, wennAtomics.notify() aufgerufen wird, oder"timed-out", wenn das Timeout abläuft.

Atomics.waitAsync() undAtomics.notify() werden zusammen verwendet, um Threads auf Grundlage eines Werts im freigegebenen Speicher zu synchronisieren. Ein Thread kann sofort fortfahren, wenn sich der Synchronisationswert geändert hat, oder auf eine Benachrichtigung eines anderen Threads warten, wenn er den Synchronisationspunkt erreicht.

Diese Methode funktioniert nur mit einemInt32Array oderBigInt64Array, das einenSharedArrayBuffer ansieht. Sie ist nicht blockierend und kann, anders alsAtomics.wait(), im Hauptthread verwendet werden. Da sie den gesamten Thread nicht blockiert, müssen Sie dennoch darauf achten, nicht auf den freigegebenen Speicher zuzugreifen, bevor das Promise abgeschlossen ist.

Syntax

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

Parameter

typedArray

EinInt32Array oderBigInt64Array, das einenSharedArrayBuffer ansieht.

index

Die Position imtypedArray, auf die gewartet wird.

value

Der erwartete Wert, der getestet wird.

timeoutOptional

Zeit, die in Millisekunden gewartet wird.NaN (und Werte, die inNaN umgewandelt werden, wieundefined) werden zuInfinity. Negative Werte werden zu0.

Rückgabewert

EinObject mit den folgenden Eigenschaften:

async

Ein boolescher Wert, der angibt, ob die Eigenschaftvalue einPromise ist oder nicht.

value

Wennasyncfalse ist, wird es ein String sein, entweder"not-equal" oder"timed-out" (nur wenn dertimeout-Parameter0 ist). Wennasynctrue ist, wird es einPromise sein, das mit einem String-Wert erfüllt wird, entweder"ok" oder"timed-out". Das Promise wird niemals abgelehnt.

Ausnahmen

TypeError

Wird ausgelöst, wenntypedArray keinInt32Array oderBigInt64Array ist, das einenSharedArrayBuffer ansieht.

RangeError

Wird ausgelöst, wennindex außerhalb der Grenzen imtypedArray liegt.

Beispiele

Verwendung von waitAsync()

Gegeben ein freigegebenesInt32Array.

js
const sab = new SharedArrayBuffer(1024);const int32 = new Int32Array(sab);

Ein lesender Thread schläft und wartet auf die Position 0, die 0 sein soll.result.value wird ein Promise sein.

js
const result = Atomics.waitAsync(int32, 0, 0, 1000);// { async: true, value: Promise {<pending>} }

Im lesenden Thread oder in einem anderen Thread wird der Speicherort 0 aufgerufen, und das Promise kann mit"ok" aufgelöst werden.

js
Atomics.notify(int32, 0);// { async: true, value: Promise {<fulfilled>: 'ok'} }

Wenn es nicht mit"ok" aufgelöst wird, war der Wert im freigegebenen Speicherort nicht der erwartete (dervalue wäre"not-equal" anstelle eines Promises) oder das Timeout wurde erreicht (das Promise wird zu"time-out" aufgelöst).

Spezifikationen

Specification
ECMAScript® 2026 Language Specification
# sec-atomics.waitasync

Browser-Kompatibilität

Siehe auch

Help improve MDN

Learn how to contribute Diese Seite wurde automatisch aus dem Englischen übersetzt.

[8]ページ先頭

©2009-2025 Movatter.jp