javascript - 数组拒绝返回值

标签 javascript arrays foreach persistence

我正在尝试使用 JavaScript 从我的 persistencejs(这是一个库!)数据库中获取数据。我正在获取值并将它们插入数组中,我在 forEach 循环中执行此操作。在循环中,数组正在填充值,我已经使用警报确认了这一点。

但是当我查看循环外部的数组时,它是空的。这是为什么?

这是代码(我尝试将变量放入函数中,并尝试将其更改为 this.newDataArray。):

var newDataArray = new Array();
function getData(){

    dataTable.all().list(function(tasks){
        tasks.forEach(function (r) {
            var tTank1 = r.Tank1;
            var tTank2 = r.Tank2;
            var tTank3 = r.Tank3;
            var tTank4 = r.Tank4;
            var tHelicopter = r.Helicopter;
            newDataArray.push(tTank1, tTank2, tTank3, tTank4, tHelicopter);
            alert(newDataArray);
        });
    });
    alert(newDataArray);
    return newDataArray
}

这里我只是测试正在执行的方法的返回值:

Data.prototype.fetchData = function(csv){
    jQuery.get(csv, function(data) {
        var result = $.csv.toArrays(data);
        result.shift();
        result.forEach(function (r) {
            var joinedResult = r.join();
            fillDB(joinedResult);
        });
    });
    alert(getData());
};

所以我希望有人知道这个问题的答案?也欢迎对我的代码和/或帖子格式提出其他批评:)

最佳答案

问题可能不在于数据未填充,而在于您过早发出警报。

jQuery 的 get 是一个异步调用,它在回调处理完成之前返回。如果您将警报移至 get 调用内,您应该会获得数据。

Data.prototype.fetchData = function(csv){
    jQuery.get(csv, function(data) {
        var result = $.csv.toArrays(data);
        result.shift();
        result.forEach(function (r) {
            var joinedResult = r.join();
            fillDB(joinedResult);
        });
        alert(getData());
    });
};

关于javascript - 数组拒绝返回值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17992837/

相关文章:

php - 从数组中插入多行到数据库

excel - For Each 嵌套在另一个 For Each 中不能完全工作

C# "Generator"方法

javascript - 如何在 useState Hook 中将字符串转换为数字?

arrays - 如何使用 Mongoose 从子文档数组中检索特定字段

java - 查找数组中任何重复的元素

arrays - 如何修复循环遍历数组中索引的代码?

javascript - 同一模板内多次触发事件

javascript - 调整动态添加的 Div 的宽度

javascript - 如何按嵌套参数分组