1. 程式人生 > >關於ajax同步異步處理循環遍歷及push時發生的疑問

關於ajax同步異步處理循環遍歷及push時發生的疑問

包含 發生 圖片 不可 開始 感激 log 向上 希望

今天寫了一個簡單的ajax請求,其中因為一些需求 渲染過程沒有寫在回調函數內,要在外部訪問遍歷後的數組進行渲染,第一次寫時圖片如下圖

技術分享圖片

此時console.log(arr)打印出來的內容是一個長度為0,包含十條完整數據的數組,如下圖

技術分享圖片

此時,當我訪問arr[0]或者arr[1]時,均會出現undefined提示,

技術分享圖片

技術分享圖片

開始的時候我一直認為是數組操作的問題,在這個方向上努力了半天,發現方向可能是錯的,最後覺得可能是因為ajax默認的異步請求,所以將請求改成了同步,如下圖

技術分享圖片

此時打印的內容變成了想要的需求,如下圖

技術分享圖片

這樣的話,我實際上的需求已經達成了,等我活忙完了回過頭來反思,發現不能理解其中到底發生了什麽,如果是因為異步請求,導致循環和push沒完成就打印了arr,那麽arr內應該是一個擁有不完整數據的數組,但打印出來的內容卻是一個擁有完整的10條數據且長度為0的數組,也就是說,異步請求時循環遍歷以及push的過程已經結束了,不然不可能有完整的10條數據,但為什麽打印出來的arr卻是一個沒有長度數據完整的數組呢?

希望路過的大神能給解答一下,感激不盡

關於ajax同步異步處理循環遍歷及push時發生的疑問