在我的例子中,我使用 、 和 、 和 。异步函数返回一些东西,并填充数组,但是它是数组的格式,以及处理我正在挣扎的数组的能力。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个赞
首先,我想我建议重新访问为什么我的变量在函数中修改后未被更改? - 随着您对异步行为的理解增长,异步代码引用。我相信这是问题的根源(因此,为什么这对社区的一些成员来说感觉像是重复的)。
为什么你打电话时得到将取决于你什么时候打电话,如果你打电话得太早并且误解了工作原理,我们会再次期望未定义。undefined
console.log(initialClasses[0])
async
但是,与其进入这些杂草,不如让我们回到你问题的根源:有没有更清洁的方法?是的!这里的误解可能来自你构建它的方式。您可以大大简化它并获得相同的功能。
您可以在异步函数内部调用以下内容
const response = await axios.get(' let initialClasses = response.data;
这将是首选方法,因为无论您要对来自该终结点的响应执行什么操作,基本上都是异步的。这样,响应数据也不会“嵌套”。
添加回答
举报
0/150
提交
取消