亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Javascript Array.push 創建一個我無法使用索引訪問的嵌套數組

Javascript Array.push 創建一個我無法使用索引訪問的嵌套數組

動漫人物 2022-08-04 16:15:47
在我的例子中,我使用 、 和 、 和 。異步函數返回一些東西,并填充數組,但是它是數組的格式,以及處理我正在掙扎的數組的能力。asyncawait.then我使用以下代碼用我的MongoDB數據庫中的對象填充數組。const initialClasses = [];const getInitData = async () => {  await axios.get('http://localhost:5000/classes/api/')    .then(response => {      initialClasses.push(response.data)    })    .catch(error => {      console.log(error)    });  }  getInitData();  console.log(initialClasses);但是,當我控制臺.log initialClasses 時,我得到以下數組:[]0: (3) [{…}, {…}, {…}] // objects provided from the async calllength: 1__proto__: Array(0)當我嘗試訪問此數組時,使用 i 得到未定義。console.log(initialClasses[0]);我在創建此數組時做錯了什么?有沒有一種更好,更清潔的方法可以做到這一點,我忽略了這一點?謝謝。
查看完整描述

1 回答

?
婷婷同學_

TA貢獻1844條經驗 獲得超8個贊

首先,我想我建議重新訪問為什么我的變量在函數中修改后未被更改? - 隨著您對異步行為的理解增長,異步代碼引用。我相信這是問題的根源(因此,為什么這對社區的一些成員來說感覺像是重復的)。

為什么你打電話時得到將取決于你什么時候打電話,如果你打電話得太早并且誤解了工作原理,我們會再次期望未定義。undefinedconsole.log(initialClasses[0])async

但是,與其進入這些雜草,不如讓我們回到你問題的根源:有沒有更清潔的方法?是的!這里的誤解可能來自你構建它的方式。您可以大大簡化它并獲得相同的功能。

您可以在異步函數內部調用以下內容

const response = await axios.get(' 
let initialClasses = response.data;

這將是首選方法,因為無論您要對來自該終結點的響應執行什么操作,基本上都是異步的。這樣,響應數據也不會“嵌套”。


查看完整回答
反對 回復 2022-08-04
  • 1 回答
  • 0 關注
  • 146 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號