javascript - 關于ajax異步加載請問數(shù)據(jù)延遲問題
問題描述
在外面定義一個空數(shù)組,然后做一個ajax請求,請求內(nèi)再嵌套一個請求,最終拼接成一個三個對象插入空數(shù)組。然后我在最外面打印數(shù)組長度,打印出來的長度是0,這個問題會影響賦值。請問怎么解決。
問題解答
回答1:ajax異步會造成這樣的問題。解決方案1.Promise 2.在ajax回調(diào)中進行賦值
回答2:ajax 是異步的,當執(zhí)行到你的 log 代碼時,ajax 還沒有返回呢。
回答3:請查閱事件循環(huán)的問題
我們知道ajax是異步操作,
你console.log 的位置 此時arr.length 其實就是[].length
當你當前的js執(zhí)行完后,ajax的success回調(diào)才會執(zhí)行,只有success回調(diào)成功后此時你的arr數(shù)組被push進值
所以你可能要把console.log放入第二個ajax的success回調(diào)里至于promise會很好的優(yōu)化這種嵌套的回調(diào),但是你要封裝你的ajax
建議把你所有的ajax 包裝成promise
回答4:ajax是數(shù)據(jù)獲取方式是異步的,所以異步獲取的數(shù)據(jù)并不能按照平時理解的同步方式去處理,應該把你的console.log 寫在 success 的 回調(diào)函數(shù)里。
回答5:將你的async:false,這樣你就可以在外面獲取到里面的值了。
回答6:這樣的話,你得改成ajax同步。異步的話,ajax和它后面的代碼同時執(zhí)行
相關文章:
1. php - 請問大批量數(shù)據(jù)處理,如何分割?2. html5和Flash對抗是什么情況?3. MySQL主鍵沖突時的更新操作和替換操作在功能上有什么差別(如圖)4. javascript - vue過渡效果 css過渡 類名的先后順序5. css右浮動字的順序顛倒了6. 數(shù)據(jù)庫 - Mysql的存儲過程真的是個坑!求助下面的存儲過程哪里錯啦,實在是找不到哪里的問題了。7. ios - 類似微博首頁,一張圖的時候是如何確定圖大小的?8. javascript - vuejs+elementui 購物車價格計算,點擊加減號修改數(shù)量總價都不會改變,但是計算執(zhí)行了9. javascript - 如何使用loadash對[object,object,object]形式的數(shù)組進行比較10. javascript - 我是做web前端的,公司最近有一個項目關于數(shù)據(jù)統(tǒng)計的!
