当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


JavaScript Atomics waitAsync()用法及代码示例


Atomic operations 中,Atomics.waitAsync() 运算符用于使操作在内存上异步等待并返回承诺。与 Atomics.wait() 相比,它是非阻塞的,并且可以在主线程上使用。如果承诺未履行,则会导致“time-out”状态,否则承诺履行后,状态将始终为‘ok’。

用法:

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

Parameters: 此操作接受四个参数。

  • typedArray: 它是 Int32Array 或 BigInt64Array。
  • ind: 它是要等待的元素的位置。
  • val: 这是期望值。
  • timeOut: 这是我们必须等待的时刻。无穷大是默认值。

返回值:它返回两个值,其中第一个值为布尔值,并告知是否创建了 Promise。如果第一个值是 true,那么第二个值是一个已履行且从未被拒绝的 Promise

示例 1:此示例显示了 waitAsync() 方法的使用。

Javascript


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

输出:

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

示例 2:此示例显示了承诺履行状态。

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);

输出:notify() 方法唤醒数组并实现承诺。

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

支持的浏览器:

  • Chrome
  • Edge
  • Opera
  • Safari

我们有 Javascript 原子方法的完整列表,要检查这些方法,请阅读这篇 JavaScript 原子参考文章。


相关用法


注:本文由纯净天空筛选整理自shobhit_sharma大神的英文原创作品 JavaScript Atomics waitAsync() Method。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。