javascript - 在 JavaScript 中使用 array.push() 后数组长度不正确

标签 javascript jquery arrays

JavaScript 菜鸟,如果我遗漏了一些基本的东西,请原谅我。

我有一个数组,想要使用 JQuery 推送从 AJAX 请求检索到的数据,其中 CalendarEvent 是我创建的自定义类。

let events=[];
$.post(url, data, function(data) {
  data.forEach(x => function(x) {
    let event = new CalendarEvent();
    events.push(event);
  });
}, "json");

我的问题是,当我尝试在 function(data) 方法中使用 console.log(events) 时,它显示为正确数量的对象。当我在方法之外(没有添加或减去任何其他内容)时,长度为 0,并且我的所有对象都位于空数组内。屏幕截图中的前两行是方法外部的 console.log(events) ,后两行位于方法内部(我也不知道为什么它们没有按顺序显示)。谁能帮我解决我的问题吗?

Console.log Console.log arrays expanded

最佳答案

在 javascript 中,所有方法常规方法都会在任何异步代码之前调用,因此发生的情况是代码外部的控制台日志发生在方法运行之前,运行依赖于 ajax 调用内部信息的任何代码方法或者您可以使用 setTimeout() 包装您需要运行的任何函数。

观看有关事件循环的演讲;它帮助我理解了这里发生的事情,当我第一次开始时这对我来说真的很困惑,但理解事件循环很有帮助。

关于javascript - 在 JavaScript 中使用 array.push() 后数组长度不正确,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59080905/

相关文章:

javascript - 在鼠标输入时突出显示图像

javascript - 使用 localstorage 保存多个 Bootstrap 面板状态

mysql - 在带有 mysql 获取对象的数组中

arrays - 如何为字符串数组添加下标

c - 如何在 C 中使用动态多维数组?

javascript - 将输入文本字段更改为标签,在标签 javascript 中输入输入值

javascript - 使用 .map 或 underscore.js 在 javascript 中重构 while 循环

javascript - 替换同名类的内部 div 中的跨度文本

javascript - 表格:submit unable to prevent default with return false

javascript - Onclick Only 似乎只工作一次