亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

為什么我可以在 for...of 循環中使用 await 關鍵字

為什么我可以在 for...of 循環中使用 await 關鍵字

郎朗坤 2022-07-15 09:22:51
編輯:請仔細閱讀。這確實有效。我試圖確切地理解為什么。編輯2:我知道異步使事情異步。為什么這不適用于 for...in 循環呢?我正在使用節點 v10.13.0。一段時間以來,我一直在 Javascript 中使用 for...of 循環在循環結構中執行異步任務。我毫不懷疑它按預期工作。我剛剛遇到了一種情況,我必須解釋為什么這是有效的,并意識到我實際上不知道。這是一個令人費解的示例,只是為了幫助可視化我的意思:async function myFunc(array) {    for (var item of array) {        await asyncRequest();    }}array在這個函數中,什么和是什么并不重要asyncRequest,關鍵是對于數組中的每個項目,程序執行asyncRequest在經過循環之前以看似順序的方式執行每個項目。我查看了https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/for...of,我發現 for...of 循環遍歷可迭代對象。好吧,一個數組絕對是可迭代的,但這個事實似乎無關。對這種行為有任何見解嗎?
查看完整描述

1 回答

?
幕布斯6054654

TA貢獻1876條經驗 獲得超7個贊

asyncandawait機制是通過結合 Promises 和生成器函數來實現的。await函數內部的每個async函數都類似于yield生成器中的 a。解析代碼時會處理代碼的轉換,因此您不必自己搞砸所有這些。

這意味著async函數內部await可以出現在任何地方:如您所知,在for ... of循環內部,但也可以在for ... in循環內部,普通的舊for循環,while循環等等。如果您閱讀了生成器函數,您會發現它在某種意義上是完全平行的,yield可以出現在任何地方。因此,循環絕不是特殊的,并且(正如您所懷疑的)它們的行為和語義與這種循環體內的含義for ... of無關。await


查看完整回答
反對 回復 2022-07-15
  • 1 回答
  • 0 關注
  • 236 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號