在 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 原子参考文章。
相关用法
- JavaScript Atomics add()用法及代码示例
- JavaScript Atomics xor()用法及代码示例
- JavaScript Atomics store()用法及代码示例
- JavaScript Atomics compareExchange()用法及代码示例
- JavaScript Atomics exchange()用法及代码示例
- JavaScript Atomics isLockFree()用法及代码示例
- JavaScript Atomics or()用法及代码示例
- JavaScript Atomics load()用法及代码示例
- JavaScript Atomics sub()用法及代码示例
- JavaScript Atomics and()用法及代码示例
- JavaScript Atomics.add()用法及代码示例
- JavaScript Atomics.and()用法及代码示例
- JavaScript Atomics.or()用法及代码示例
- JavaScript Atomics.isLockFree()用法及代码示例
- JavaScript Atomics.load()用法及代码示例
- JavaScript Atomics.store()用法及代码示例
- JavaScript Atomics.sub()用法及代码示例
- JavaScript Atomics.xor()用法及代码示例
- JavaScript Array length用法及代码示例
- JavaScript Array reverse()用法及代码示例
- JavaScript Array sort()用法及代码示例
- JavaScript Array fill()用法及代码示例
- JavaScript Array join()用法及代码示例
- JavaScript Array toString()用法及代码示例
- JavaScript Array pop()用法及代码示例
注:本文由纯净天空筛选整理自shobhit_sharma大神的英文原创作品 JavaScript Atomics waitAsync() Method。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。