你好,我只想在节点中存储CSV列,以操纵数组中的数据,但我试图读取并存储它,但是它不起作用,这是怎么回事?这是我的代码
let stream = fs.createReadStream("Supliers.csv");
let csvStream = csv({headers: true})
.on("data", function(data){
/*data.forEach(x => {
console.log(x)
})*/
Final.push(data)
})
.on("end", function(){
console.log(Final);//[THE COMPLETE DATA TOTALLY OK]
});
stream.pipe(csvStream);
console.log(Final)// []
我不明白:(帮助
答案 0 :(得分:0)
根据您的代码,我添加了注释。
let stream = fs.createReadStream("Supliers.csv");
let csvStream = csv({headers: true}).on("data", function(data){
// This is inside a function that gets slightly later, in the
// next tick of the event loop. I.e. it's called after
// the 'console.log(Final)' statement.
Final.push(data)
})
.on("end", function(){
// You can do your processing in this function
console.log(Final);
});
stream.pipe(csvStream);
// This gets called before the '.on("data"...' function.
console.log(Final)
// To prove that this works (***but don't use this in your code***)
// the following should work too.
setTimeout(() => console.log(Final), 100);
我建议您对Node.js事件循环进行一些阅读:https://nodejs.org/en/docs/guides/event-loop-timers-and-nexttick/