【问题标题】:incorrect array length after using array.push() in JavaScript在 JavaScript 中使用 array.push() 后数组长度不正确
【发布时间】:2019-11-28 02:22:26
【问题描述】:

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) 时,它显示为正确数量的对象。当我在方法之外console.log(events)(没有添加或减去其他内容)时,长度为 0,并且我的所有对象都在一个空数组中。截图中的前两行是方法外的console.log(events),后两行是方法内的(我也不知道为什么它们没有按顺序显示)。谁能帮我解决我的问题?

Console.log Console.log arrays expanded

【问题讨论】:

    标签: javascript jquery arrays


    【解决方案1】:

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

    观看有关事件循环的演讲;它帮助我理解了这里发生的事情,当我刚开始的时候这真的让我很困惑,但是理解事件循环很有帮助。

    【讨论】:

    • 谢谢!我从没想过它是异步部分。看来我还有很多东西要学:)
    猜你喜欢
    • 1970-01-01
    • 2019-04-23
    • 2022-01-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-14
    • 2020-11-18
    相关资源
    最近更新 更多