當前位置: 首頁>>編程示例 >>用法及示例精選 >>正文


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