我试图从csv文件中获取一些数据,然后对它们进行一些魔术处理,并使用此派生数据创建一个对象。 我使用module.exports创建了此函数,并导出了它。
User
并导入到路线;
var csvtojson = require('csvtojson');
var data = [];
module.exports = function createStock(name){
var myObj = {};
csvtojson().fromFile('./csv-raw/'+name+'.csv')
.then(source => {
source.forEach(value => {
var row = {};
row.Date = value.Date;
row.Dividend_Yield = value.Dividend_Yield;
row.Gross_Dividend_Per_Share = value.Gross_Dividend_Per_Share;
row.Distribution_Rate = value.Distribution_Rate;
data.push(row);
});
})
.then(() => {
myObj = {
name: name,
data: data,
summary: {a: Math.random(), b: Math.random(), c: Math.random()}
};
})
.then(() => {
console.log(myObj)
return myObj
})
}
(我可以在第一个文件中看到console.log(myObj)的结果)
(我看不到console.log(stock);在第二个文件中)
我试图找出问题是否源于JS的异步行为,但可以找到任何解决方案?
通常,我的问题是如何将在.then块内创建的数据发送到另一个JS文件。
答案 0 :(得分:0)
在您的createStock
函数中,您需要将呼叫返回给csvtojson
。这将返回使await
正常工作的承诺。然后,您将不需要setTimeout
,而只需console.log(stock)
。
module.exports = function createStock(name){
var myObj = {};
return csvtojson().fromFile('./csv-raw/'+name+'.csv')
...
};