for await of

異步迭代器(for-await-of):循環(huán)等待每個Promise對象變?yōu)閞esolved狀態(tài)才進入下一步。

我們知道 for...of 是同步運行的,看如下代碼

  function TimeOut(time) {
   return new Promise(function (resolve, reject) {
    setTimeout(function () {
     resolve(time)
    }, time)
   })
  }
  async function test() {
   let arr = [TimeOut(2000), TimeOut(1000), TimeOut(3000)]
   for (let item of arr) {
    console.log(Date.now(), item.then(console.log))
   }
  }
  test() 

上面打印結果如下圖

圖片

上述代碼證實了 for of 方法不能遍歷異步迭代器,得到的結果并不是我們所期待的,于是 for await of 就粉墨登場啦!

ES9 中可以用 for...await...of 的語法來操作

 function TimeOut(time) {
   return new Promise(function (resolve, reject) {
    setTimeout(function () {
     resolve(time)
    }, time)
   })
  }
  async function test() {
   let arr = [TimeOut(2000), TimeOut(1000), TimeOut(3000)]
   for await (let item of arr) {
    console.log(Date.now(), item)
   }
  }
  test() // 1560092345730 2000// 1560092345730 1000// 1560092346336 3000復制代碼

for await of 環(huán)等待每個Promise對象變?yōu)閞esolved狀態(tài)才進入下一步。所有打印的結果為 2000,1000,3000

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容