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

在JavaScript中使用array.push()后数组长度不正确,javascript,jquery,arrays,Javascript,Jquery,Arrays,JavaScript中的noob伙伴,如果我遗漏了一些基本的东西,请原谅我 我有一个数组,我想使用JQuery推送从AJAX请求检索到的数据,其中CalendarEvent是我创建的自定义类 let events=[]; $.post(url, data, function(data) { data.forEach(x => function(x) { let event = new CalendarEvent(); events.push(event); });

JavaScript中的noob伙伴,如果我遗漏了一些基本的东西,请原谅我

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

let events=[];
$.post(url, data, function(data) {
  data.forEach(x => function(x) {
    let event = new CalendarEvent();
    events.push(event);
  });
}, "json");
我的问题是,当我尝试在
函数(数据)
方法中
console.log(events)
时,它显示为正确数量的对象。当我
console.log(events)
在方法之外时(没有添加或减去其他内容),长度为0,并且我的所有对象都在一个空数组中。屏幕截图中的前两行是
console.log(events)
在方法外部,后两行在方法内部(我也不知道为什么它们没有按顺序显示)。有人能帮我解决问题吗


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


观看事件循环中的谈话;它帮助我理解了这里发生的事情,这在我刚开始的时候让我很困惑,但是理解事件循环有帮助。

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


观看事件循环中的谈话;它帮助我理解了这里发生的事情,这在我刚开始时让我很困惑,但理解事件循环有帮助。

谢谢!我从未想过它是异步部分。看来我还有很多东西要学:)谢谢!我从未想过它是异步部分。看来我还有很多东西要学:)