搜尋

首頁  >  問答  >  主體

javascript - 關於ajax非同步載入請問資料延遲問題

在外面定義一個空數組,然後做一個ajax請求,請求內再嵌套一個請求,最後拼接成一個三個物件插入空數組。
然後我在最外面印出陣列長度,印出來的長度是0,這個問題會影響賦值。請問怎麼解決。

#
阿神阿神2764 天前723

全部回覆(6)我來回復

  • 为情所困

    为情所困2017-06-30 09:55:44

    ajax異步會造成這樣的問題。解1.Promise 2.在ajax回呼中進行賦值

    回覆
    0
  • ringa_lee

    ringa_lee2017-06-30 09:55:44

    ajax 是異步的,當執行到你的 log 程式碼時,ajax 還沒有回傳。

    回覆
    0
  • 欧阳克

    欧阳克2017-06-30 09:55:44

    請查閱事件循環的問題

    我們知道ajax是非同步操作,

    你console.log 的位置 此時arr.length 其實就是[].length

    當你目前的js執行完後,ajax的success回調才會執行,只有success回調成功後此時你的arr數組被push進值

    所以你可能要把console.log放入第二個ajax的success回調裡
    至於promise會很好的優化這種嵌套的回調,但是你要封裝你的ajax

    建議把你所有的ajax 包裝成promise

    回覆
    0
  • 为情所困

    为情所困2017-06-30 09:55:44

    ajax是資料取得方式是異步的,所以非同步取得的資料並不能按照平常理解的同步方式去處理,應該把你的console.log 寫在 success 的 回呼函數裡。

    回覆
    0
  • 过去多啦不再A梦

    过去多啦不再A梦2017-06-30 09:55:44

    將你的async:false,這樣你就可以在外面獲取到裡面的值了。

    回覆
    0
  • 巴扎黑

    巴扎黑2017-06-30 09:55:44

    這樣的話,你得改成ajax同步。非同步的話,ajax和它後面的程式碼同時執行

    回覆
    0
  • 取消回覆