为了账号安全,请及时绑定邮箱和手机立即绑定

控制台中存在完整数组,但 array.length = 0

控制台中存在完整数组,但 array.length = 0

MMTTMM 2022-05-26 14:50:48
我试图理解为什么,当我将 axios 调用的结果分配给一个变量时,控制台记录该变量将显示完整的对象,但安慰它的长度返回零。因此,当我尝试在结果上运行 forEach 时,没有爱可以拥有。getNumberOfCollections() {  let results = queries.getTable("Quality"); // imported function to grab an Airtable table.  console.log(results); // full array, i.e. ['bing', 'bong', 'boom']  console.log(results.length); // 0  results.forEach((result) =>{ // no love });}
查看完整描述

1 回答

?
慕田峪4524236

TA贡献1875条经验 获得超5个赞

当您 console.log 数组时,很可能该数组仍然是空的。


console.log(results); // full array, i.e. ['bing', 'bong', 'boom']

console.log(results.length); // 0

运行时console.log(results.length),它正在执行,这就是打印出来console.log(0)的原因。0


运行时,console.log(results)它将稍后打印出数组。该数组稍后在最终运行时填充。(所以 console.log 不是同步的——稍后它会打印出一些东西。)resultsconsole.log()


你可以试试


console.log(JSON.stringify(results));

并且您可能会看到一个空数组,因为JSON.stringify(results)立即评估它是什么并在当前时间将其转换为字符串,而不是稍后。


看起来您正在获取一些数据。正确的方法通常是通过回调或承诺的履行处理程序:


fetch(" some url here ")

  .then(response => response.json())

  .then(data => console.log(data));

因此,在调用回调或“履行处理程序”之前,您不会拥有数据。如果你console.log(results.length)当时,你应该得到正确的长度。(数据就在那里)。


查看完整回答
反对 回复 2022-05-26
  • 1 回答
  • 0 关注
  • 200 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号