【发布时间】:2021-07-09 05:10:04
【问题描述】:
我正在尝试从 csv 文件中提取像 {Name:Value, Name2:Value2,...} 这样的字典数据,如下所示
<metadata>
<metadata>
<metadata>
<metadata>
ID,1,2,3,4,5,6,...
Name,ABC,BCD,CDE,DEF,EFG,FGH,...
Val,123,234,345,456,567,678,...
使用下面的函数
async function getMap(file) {
rv = {};
fs.createReadStream(file)
.pipe(csv.parse({from_line: 5, to_line:7, columns: true, bom: true}, (err, data) => {
for(i=1;i<=200;i++) {
rv[data[0][i]] = data[1][i];
}
}));
return rv;
}
我认为这会返回如下内容:
{'ABC':123,'BCD':234,...}
但返回的是空值。我确定这与范围有关(如果这是正确的词的话),但还无法弄清楚。
===============================
最初我认为这是在范围内做的事情,但我更多地研究了结果,更多的是我不理解的异步问题。这怎么能等待 readStream 处理到文件末尾,使用 await、promise、resolve 等。
【问题讨论】: