循環中,調用異步接口獲取數據


問題描述:for循環中,異步調用后端接口無效(同時執行所有任務,導致頁面卡死)

提示:循環不能是異步的,for循環是同步任務,內部的異步任務會在for循環執行完成后執行

解決方法:循環中使用遞歸。使用遞歸函數在事件循環的單獨輪次中執行迭代,在事件循環的單獨輪次中執行遞歸,不會導致調用棧溢出。

()事件循環的每個輪次中調用其他事件處理程序的調用棧最初是空的)

 

這個問題涉及事件循環:

1、所有同步任務都在主線程上執行,形成一個“執行棧”

2、主線程之外,還存在一個“任務隊列”,只要異步任務有了結果,就在“任務隊列”中放置一個事件

3、一旦執行棧的所有同步任務完成,系統就讀取“任務隊列”對應異步任務,結束等待狀態,進入執行棧,開始執行(執行異步回調)

4、主線程不斷重復(3)步驟

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM