静态 Atomics .wait() method verifies that a given position in an Int32Array still contains a given value and if so sleeps, awaiting a wakeup or a timeout. It returns a string which is either " ok ", " not-equal ", or " timed-out ".

注意: This operation only works with a shared Int32Array and may not be allowed on the main thread.

句法

Atomics.wait(typedArray, index, value[, timeout])
					

参数

typedArray
A shared Int32Array .
index
The position in the typedArray to wait on.
value

The expected value to test.

timeout 可选
Time to wait in milliseconds. Infinity , if no time is provided.

返回值

A String which is either " ok ", " not-equal ", or " timed-out ".

异常

范例

Using wait()

Given a shared Int32Array :

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

A reading thread is sleeping and waiting on location 0 which is expected to be 0. As long as that is true, it will not go on. However, once the writing thread has stored a new value, it will be notified by the writing thread and return the new value (123).

Atomics.wait(int32, 0, 0);
console.log(int32[0]); // 123
					

A writing thread stores a new value and notifies the waiting thread once it has written:

console.log(int32[0]); // 0;
Atomics.store(int32, 0, 123);
Atomics.notify(int32, 0, 1);
					

规范

规范
ECMAScript (ECMA-262)
The definition of 'Atomics.wait' in that specification.

浏览器兼容性

The compatibility table on this page is generated from structured data. If you'd like to contribute to the data, please check out https://github.com/mdn/browser-compat-data and send us a pull request. 更新 GitHub 上的兼容性数据
Desktop Mobile Server
Chrome Edge Firefox Internet Explorer Opera Safari Android webview Chrome for Android Firefox for Android Opera for Android Safari on iOS Samsung Internet Node.js
wait Chrome 68
68
不支持 60 — 63
Chrome disabled SharedArrayBuffer on January 5, 2018 to help reduce the efficacy of speculative side-channel attacks . This was a temporary removal while mitigations were put in place.
Edge 79
79
不支持 16 — 17
Support was removed to mitigate speculative execution side-channel attacks (Windows blog) .
Firefox 78
78
57 Disabled
Support was disabled by default to mitigate speculative execution side-channel attacks (Mozilla Security Blog) .
Disabled From version 57: this feature is behind the javascript.options.shared_memory preference (needs to be set to true ). To change preferences in Firefox, visit about:config.
不支持 55 — 57
不支持 48 — 55 Disabled
Disabled From version 48 until version 55 (exclusive): this feature is behind the javascript.options.shared_memory preference (needs to be set to true ). To change preferences in Firefox, visit about:config.
不支持 46 — 48 Alternate Name Disabled
The method returns values Atomics.OK , Atomics.TIMEDOUT ,和 Atomics.NOTEQUAL , instead of the later-specified strings.
Alternate Name Uses the non-standard name: futexWait
Disabled ). To change preferences in Firefox, visit about:config.
IE No Opera No Safari 10.1 — 11.1 WebView Android 60 — 63
不支持 60 — 63
Chrome disabled SharedArrayBuffer on January 5, 2018 to help reduce the efficacy of speculative side-channel attacks . This is intended as a temporary measure until other mitigations are in place.
Chrome Android 60 — 63
不支持 60 — 63
Chrome disabled SharedArrayBuffer on January 5, 2018 to help reduce the efficacy of speculative side-channel attacks . This is intended as a temporary measure until other mitigations are in place.
Firefox Android 57 Disabled
57 Disabled
Support was disabled by default to mitigate speculative execution side-channel attacks (Mozilla Security Blog) .
Disabled From version 57: this feature is behind the javascript.options.shared_memory preference (needs to be set to true ). To change preferences in Firefox, visit about:config.
不支持 55 — 57
不支持 48 — 55 Disabled
Disabled From version 48 until version 55 (exclusive): this feature is behind the javascript.options.shared_memory preference (needs to be set to true ). To change preferences in Firefox, visit about:config.
不支持 46 — 48 Alternate Name Disabled
The method returns values Atomics.OK , Atomics.TIMEDOUT ,和 Atomics.NOTEQUAL , instead of the later-specified strings.
Alternate Name Uses the non-standard name: futexWait
Disabled ). To change preferences in Firefox, visit about:config.
Opera Android No Safari iOS 10.3 — 11.3 Samsung Internet Android No
不支持 No
Chrome disabled SharedArrayBuffer on January 5, 2018 to help reduce the efficacy of speculative side-channel attacks . This is intended as a temporary measure until other mitigations are in place.
nodejs 8.10.0

图例

完整支持

完整支持

不支持

不支持

见实现注意事项。

用户必须明确启用此特征。

用户必须明确启用此特征。

使用非标名称。

另请参阅

元数据

  • 最后修改: