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)
,后两行位于方法内部(我也不知道为什么它们没有按顺序显示)。谁能帮我解决我的问题吗?
最佳答案
在 javascript 中,所有方法常规方法都会在任何异步代码之前调用,因此发生的情况是代码外部的控制台日志发生在方法运行之前,运行依赖于 ajax 调用内部信息的任何代码方法或者您可以使用 setTimeout() 包装您需要运行的任何函数。
观看有关事件循环的演讲;它帮助我理解了这里发生的事情,当我第一次开始时这对我来说真的很困惑,但理解事件循环很有帮助。
关于javascript - 在 JavaScript 中使用 array.push() 后数组长度不正确,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59080905/