在 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。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。