Atomics.waitAsync()
静态
Atomics.waitAsync()
方法在共享内存位置上异步等待,并返回
Promise
。
与
Atomics.wait()
,
waitAsync
是非阻塞的,可以在主线程上使用
注意:此操作仅适用于共享的
Int32Array
或
BigInt64Array
。
语法
Atomics.waitAsync(typedArray, index, value) Atomics.waitAsync(typedArray, index, value, timeout)
Parameters
-
typedArray -
A shared
Int32ArrayorBigInt64Array. -
index -
The position in the
typedArrayto wait on. -
value -
The expected value to test.
-
timeoutOptional -
Time to wait in milliseconds.
Infinity, if no time is provided.
Return value
An
Object
with the following properties:
-
async -
A boolean indicating whether the
valueproperty is aPromiseor not. -
value -
If
asyncisfalse, it will be a string which is either"not-equal"or"timed-out"(only when thetimeoutparameter is0). Ifasyncistrue, it will be aPromisewhich is fulfilled with a string value, either"ok"or"timed-out". The promise is never rejected.
Examples
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. The
result.value
will be a promise.
const result = Atomics.waitAsync(int32, 0, 0, 1000);
// { async: true, value: Promise {<pending>} }
In the reading thread or in another thread, the memory location 0 is called and the promise can be resolved with
"ok"
.
Atomics.notify(int32, 0);
// { async: true, value: Promise {<fulfilled>: 'ok'} }
If it isn't resolving to
"ok"
, the value in the shared memory location wasn't the expected(the
value
would be
"not-equal"
instead of a promise)or the timeout was reached(the promise will resolve to
"time-out"
).