為什麼在瀏覽器環境中使用while loop執行ajax request會讓頁面陷入凍結狀態?

環境

Google Chrome: 89.0.4389.114 (Official Build) (64-bit)
os: Windows_NT 10.0.18363 win32 x64

原始題目

ALPHA Camp 學期 2-2:請向 RANDOM USER GENERATOR 這支 API 索取資料,並在瀏覽器畫面上點擊按鈕後,輸出三位「只有女性」的資料。

遭遇問題

最初想要使用以下程式碼來過濾 API 回傳的資料,但會讓瀏覽器分頁陷入凍結狀態:

問題背後的脈絡梳理

基本上 Philip Roberts 的影片回答了「為什麼以上程式碼會造成瀏覽器凍結?」的問題:

結論

此問題的解決方式

補充

因為stack裡面的任務沒有清空,callback queue裡面的task永遠不會被執行

參考文件