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

我试图理解为什么,当我将 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 });

}


MMTTMM
浏览 201回答 1
1回答

慕田峪4524236

当您 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)当时,你应该得到正确的长度。(数据就在那里)。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript