Javascript 新手尝试从fastcsv返回2d数组,但返回未定义
我这里有这个密码Javascript 新手尝试从fastcsv返回2d数组,但返回未定义,javascript,arrays,node.js,csv,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() {
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;
})
}
函数marketInfo(){
var市场_数据=[];
csv
.fromPath(“market_info.csv”)
.on(“数据”),功能(数据){
如果(data.length!=0){
市场数据推送(数据);
}
})
.on(“结束”,函数(){
对于(var i=0;i
它打印数据,我知道有人在另一篇文章中提到了回调,但我不太明白。。。数据有0个标题,因此它与['market_cap','123456789']]等保持一致。返回数组时,它是未定义的。我试图搜索,但我不知道这里的问题是什么您的
返回市场\u数据
功能只是呼啸而过。它没有任何意义。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);
})
}
由于编写回调驱动的代码可能会很麻烦,您可能会尝试转向基于承诺或
async
/wait
的解决方案。这是Node.js吗?是的,我将nodejs与express/ejs结合使用。作为java/python的高级用户,您建议学习哪些行业标准?承诺还是cb就足够了?JavaScript社区在这个问题上有各种各样的观点,这主要是因为存在相互冲突的用例。如果您正在编写需要支持IE10+的浏览器端代码,那么您就不能使用任何使生活更轻松的新ES6功能。如果您正在当前构建中编写Node.js代码,那么您可以利用一切。通常对什么是可能的有一个很好的概述,不一定是最好的。我个人认为承诺和async
/wait
会让生活变得更容易,但这只是我的观点。我非常感谢项目所做的工作,因为async
/正在无缝地等待
螺栓。很抱歉再次打扰您,但我知道没有返回,但是我如何通过index.js将动态内容传递到index.ejs文件?如果没有返回功能,我似乎无法做到这一点me@ImranChowdhry最好把这个问题作为一个新问题来问,而不是把它挂在这个问题上。
marketInfo(function(err, market_data) {
// Do stuff with data
});