在JavaScript中使用array.push()后数组长度不正确
JavaScript中的noob伙伴,如果我遗漏了一些基本的东西,请原谅我 我有一个数组,我想使用JQuery推送从AJAX请求检索到的数据,其中CalendarEvent是我创建的自定义类在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); });
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()包装在此之后需要运行的任何函数
观看事件循环中的谈话;它帮助我理解了这里发生的事情,这在我刚开始时让我很困惑,但理解事件循环有帮助。谢谢!我从未想过它是异步部分。看来我还有很多东西要学:)谢谢!我从未想过它是异步部分。看来我还有很多东西要学:)