JavaScript Atomics waitAsync() Method

Among the Atomic operations the Atomics.waitAsync() operator is used to make an operation wait asynchronously on memory and returns a promise. It is non-blocking as compared to Atomics.wait() and can be used on the main thread. If the promise is not fulfilled then it will lead to a ‘time-out’ status otherwise the status will always be ‘ok’ after the promise has been fulfilled.

Syntax:

Atomics.waitAsync(typedArray, ind, val, timeOut)

Parameters: This operation accepts four parameters.

  • typedArray: It is an Int32Array or BigInt64Array.
  • ind: It is the position of the element to wait on.
  • val: It is the expected value.
  • timeOut: It is the time for which we have to wait. Infinity is the default value.

Return Value: It returns two values where the first value is boolean and tells if the promise is created. If the first value is true then the second value is a Promise which is fulfilled and never rejected 

Example 1: This example shows the use of the waitAsync() method.

Javascript




let example = new SharedArrayBuffer(1024);
let arr = new Int32Array(example);
console.log(Atomics.waitAsync(arr, 0, 0, 1000));


Output:

{ async: true, value: Promise { <pending> } }

Example 2: This example shows the promise fulfilled state.

Javascript




let example = new SharedArrayBuffer(1024);
let arr = new Int32Array(example);
let res = Atomics.waitAsync(arr, 0, 0, 1000)
 
console.log(res);
 
Atomics.notify(arr, 0)
 
setTimeout(() => {
    console.log(res);   
}, 1000);


Output: The notify() method wakes the array and the promise is fulfilled.

{ async: true, value: Promise { <pending> } }
{ async: true, value: Promise { 'ok' } }

Supported Browsers:

  • Chrome
  • Edge
  • Opera
  • Safari

We have a complete list of Javascript Atomic methods, to check those please go through this JavaScript Atomics Reference article.


Contact Us