新手试图从fastcsv返回2d数组但返回undefined

时间:2018-01-19 19:40:51

标签: javascript arrays node.js csv

我这里有这段代码

function marketInfo() {
    var market_data = [];
    csv
    .fromPath("market_info.csv")
    .on("data", function(data) {
        if (data.length != 0) {
            market_data.push(data);
        }
    })
    .on("end", function() {
        for (var i=0; i < market_data.length; i++) {
            result.push(market_data[i]);
        }
        // console.log(market_data);
        return market_data;
    })
}

它打印数据,我知道有人在另一篇文章中提到过有关回调的内容,但我不太明白......数据有0个标题,所以它与[[&#39; market_cap&#39;,&#39; 123456789&#39;]等等。返回数组时,它是未定义的。我试图搜索,但我无法弄清楚这里的问题是什么

1 个答案:

答案 0 :(得分:1)

你的return market_data函数只是大声疾呼。它没有任何意义。 marketInfo函数本身使用带回调的异步代码。除非您为该函数提供回调,否则无法捕获该返回值。

function marketInfo(cb) {
    var market_data = [];
    csv
    .fromPath("market_info.csv")
    .on("data", function(data) {
        if (data.length != 0) {
            market_data.push(data);
        }
    })
    .on("end", function() {
        for (var i=0; i < market_data.length; i++) {
            result.push(market_data[i]);
        }
        // console.log(market_data);
        cb(null, market_data);
    })
}

需要传递回调的地方:

marketInfo(function(err, market_data) {
  // Do stuff with data
});

由于编写回调驱动的代码可能令人痛苦,您可以尝试转向基于Promises或async / await的解决方案。