我这里有这段代码
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;]等等。返回数组时,它是未定义的。我试图搜索,但我无法弄清楚这里的问题是什么
答案 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
的解决方案。